我有一个ListView包含对象(由名称表示)的 JavaFX 。我想根据其严重性(对象的字段之一)为每个项目的名称着色。是否可以?如果是,我该怎么做?
例如,我在列表视图中有一个世界各地的新闻列表,每个新消息都有一个字段,无论是否是重要的新消息,如果是,我想在列表视图中将新消息的名称涂成红色,否则我想用绿色给它上色。
我的代码:
private ListView<String> newsList;
private Vector<IntelligenceNew> newsListVec;
private ObservableList<String> newsListObserver;
public void initializeListView(IntelligenceSource source) {
newsListObserver = FXCollections.observableArrayList ();
newsListVec = new Vector<>();
for (IntelligenceNew news : source.getListOfNews()){
newsListObserver.add(news.getName());
newsListVec.add(news);
}
newsList.setItems(newsListObserver);
}
Run Code Online (Sandbox Code Playgroud)
在将新闻插入 ListView 时,我想检查每个新消息的严重性,然后将其着色为红色或绿色。
ListCell<String>(比如,named YourFormatCell)ListCell<String>.updateItem(String item, boolean empty)设置单元格的颜色使用setTextFill(isSelected()如果需要考虑)YourFormatCell使用ListView<String>.setCellFactorypublic class YourFormatCell extends ListCell<String> {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
setTextFill(isSevere(item)?Color.RED:Color.GREEN);
}
}
Run Code Online (Sandbox Code Playgroud)
newsList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> list) {
return new YourFormatCell();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2605 次 |
| 最近记录: |