java - 如何动态更改 JavaFX 中 ListView 中项目的背景

标签 java listview javafx colors

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

我该怎么做?

最佳答案

您可以为 ListView 使用自定义单元格工厂来检查条件并将适当的 css 样式类应用于每个项目/单元格。

以下代码演示了如何对具有字符串类型项目的 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;
}

关于java - 如何动态更改 JavaFX 中 ListView 中项目的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696033/

相关文章:

JavaFX - 为什么分数没有增加?

java - 在 Java 应用程序中使用处理

java - Android 中的数组编辑

java - 无法通过 Windows 10 和 DLINK DIR-615 路由器中的 Java 代码获取 DNS 请求

java - 将项目添加到 ListView 适配器中的特定列

java - 如何在Java中检查用户是否输入了另一个数字:

java - 在开源企业 Java 堆栈上促进可编辑、动态、SEO 友好产品页面的框架?

listview - 动态在可折叠/分隔符内创建 ListView

JavaFX - 如何删除 ListView 和 TableView 的 strip ?

JavaFX。将辅助方法中的实例变量更改为启动方法