Css JavaFXListView-CellFactory样式
我正在使用一个带有CellFactory的ListView,为每个列表条目生成Css JavaFXListView-CellFactory样式,css,listview,javafx,Css,Listview,Javafx,我正在使用一个带有CellFactory的ListView,为每个列表条目生成标签。当选择列表项时,标签的文本将变为白色,无论我为列表视图或列表单元格设置了什么CSS样式 如何控制CellFactory使用的标签的颜色/样式行为 items.addAll(Arrays.asList("Test 1","Test 2","Test 3")); lstPreview.setItems(items); lstPreview.setCellFactory(i -> new ListCell<
标签。当选择列表项时,标签的文本将变为白色,无论我为列表视图
或列表单元格
设置了什么CSS
样式
如何控制CellFactory使用的标签
的颜色/样式行为
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));
}
}
});
items.addAll(数组.asList(“测试1”、“测试2”、“测试3”);
lstreview.setItems(items);
lstreview.setCellFactory(i->新建ListCell(){
@凌驾
受保护的void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
如果(项==null | |空){
setText(空);
}否则{
setGraphic(新标签(项目));
}
}
});
当选择列表单元格时,您可以将css应用于标签
.list-cell:filled:selected .label {
-fx-text-fill: black ;
}
对于选定的列表单元格,css是
.list-cell:filled:selected {
...
}
对于具有标签的选定列表单元格,我们可以编写
.list-cell:filled:selected .label {
...
}
要给标签上色,可以使用-fx text fill
.list-cell:filled:selected .label {
-fx-text-fill: red;
}
如果内容是标签以外的任何其他节点,则可以使用相同的方法
结果如下
编辑
如果您只想覆盖默认白色,则可以覆盖所选屏幕上的.label
.list-cell:filled:selected .label {
-fx-text-fill: black ;
}
实际上,您不需要使用标签设置图形,因为单元格已经有一个标签
,您可以直接设置样式:设置样式(…);刚毛(…)etc。@Uluk Biy:是的,我可以在我的示例中避免额外的标签,但在实际使用中,我有一个复杂的布局,包含标签
和其他控件,例如网格窗格
,所以我无法避免标签
在那里……但是有什么方法可以防止默认的“白色”吗-要应用的样式?只需使用自定义样式覆盖默认样式。我添加了一个编辑。