JavaFX ListView - CellFactory样式

时间:2015-04-08 12:20:44

标签: css listview javafx

我正在使用带有CellFactory的ListView为每个列表条目生成Labels。当列表条目被选中时,无论我为LabelsCSS设置的list-view样式,list-cell的文字都会变为白色。< / p>

如何控制Labels又名CellFactory使用的ListCell的颜色/样式行为?

items.addAll(Arrays.asList("Test 1","Test 2","Test 3"));
lstPreview.setItems(items);
lstPreview.setCellFactory(i -> new ListCell<String> () {
            @Override
            protected void updateItem (String item,boolean empty){
                super.updateItem(item, empty);
                if (item == null || empty) {
                    setText(null);
                } else {
                    setGraphic(new Label(item));
                }
            }

    });

1 个答案:

答案 0 :(得分:2)

当列表单元格被选中时,您可以将{css}应用于label

对于选定的列表单元格,css为

.list-cell:filled:selected {
    ...
}

对于具有标签的选定列表单元格,我们可以编写

.list-cell:filled:selected .label {
    ...
}

要为标签着色,您可以使用-fx-text-fill

.list-cell:filled:selected .label {
    -fx-text-fill: red;
}

如果内容是除Label之外的任何其他节点,则可以使用相同的方式。

输出如下

enter image description here

修改

如果您只想覆盖默认的白色,可以覆盖所选的.label

.list-cell:filled:selected .label {
    -fx-text-fill: black ;
}