我正在使用带有CellFactory的ListView为每个列表条目生成Labels
。当列表条目被选中时,无论我为Labels
或CSS
设置的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));
}
}
});
答案 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之外的任何其他节点,则可以使用相同的方式。
输出如下
修改强>
如果您只想覆盖默认的白色,可以覆盖所选的.label
。
.list-cell:filled:selected .label {
-fx-text-fill: black ;
}