我正在编写一个程序,它将一组项放在listview中。 然后它检查它是否在数据库中找到了项目。如果在数据库中找不到该项目,我想在列表视图中更改该项目的背景。 我在这个程序中使用JavaFX。
我该怎么做?
答案 0 :(得分:4)
您可以使用ListView的自定义单元工厂来检查条件,并将适当的css样式类应用于每个项目/单元格。
以下代码显示了如何使用String类型的项目查看Listview。
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>(){
@Override
public ListCell<String> call(ListView<String> p) {
ListCell<String> cell = new ListCell<String>(){
@Override
protected void updateItem(String t, boolean bln) {
super.updateItem(t, bln);
if (t != null ) {
setText( t);
if (item_is_not_available){
if (!getStyleClass().contains("mystyleclass") {
getStyleClass().add("mystyleclass");
}
} else {
getStyleClass().remove("mystyleclass");
}
} else {
setText("");
}
}
};
return cell;
}
});
在您的css文件中,mystyleclass
的可能定义可能如下所示(显示红色背景不可用的项目):
.mystyleclass{
-fx-background-color: #ff0000;
}