如何在JavaFX中动态更改列表视图中项目的背景

时间:2015-09-21 13:05:51

标签: java listview javafx colors

我正在编写一个程序,它将一组项放在listview中。 然后它检查它是否在数据库中找到了项目。如果在数据库中找不到该项目,我想在列表视图中更改该项目的背景。 我在这个程序中使用JavaFX。

我该怎么做?

1 个答案:

答案 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;
}