动态更改ListView中单元格的背景

时间:2015-10-02 13:32:24

标签: java listview javafx background cell

我的listview有问题。 我有一些代码可以改变ListView中某些单元格的背景。但是当我在列表视图中滚动时,背景会变为错误的单元格。

在这里你看到一些代码: 在列表视图中更改单元格的背景:

@Override
        public ListCell<String> call(ListView<String> param) {
            ListCell<String> cell = new ListCell<String>() {
                @Override
                protected void updateItem(String t, boolean bln) {
                    super.updateItem(t, bln);
                    if (t != null) {
                        setText(t);

                        if (!controller.checkGerecht(t)) {

                           if (!getStyleClass().contains("mystyleclass")) {
                                getStyleClass().add("mystyleclass");
                                foutieveInput.add(t);
                            } else {      
                               getStyleClass().remove("mystyleclass");
                            }
                        } else {
                            setText(t);

                        }
                    }
                }

css文件:

.mystyleclass{
    -fx-background-color: #ff0000;
}

1 个答案:

答案 0 :(得分:1)

如果您希望仅controller.checkGerecht(t)false remove的单元格上的红色背景,则您的逻辑实现不正确。您尝试删除样式类(如果它不存在):如果条件不成立,则要删除样式类。 (即你在错误的else条款中有null。)

此外,您需要处理更新单元格以保持public ListCell<String> call(ListView<String> param) { ListCell<String> cell = new ListCell<String>() { @Override protected void updateItem(String t, boolean bln) { super.updateItem(t, bln); if (t == null) { setText(null); getStyleClass().remove("mystyleclass"); } else { setText(t); if (!controller.checkGerecht(t)) { if (!getStyleClass().contains("mystyleclass")) { getStyleClass().add("mystyleclass"); foutieveInput.add(t); } } else { getStyleClass().remove("mystyleclass"); } } } }; return cell ; } 值的情况(例如,如果它为空):

JOIN