Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css JavaFXListView-CellFactory样式_Css_Listview_Javafx - Fatal编程技术网

Css JavaFXListView-CellFactory样式

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<

我正在使用一个带有CellFactory的ListView,为每个列表条目生成
标签。当选择列表项时,
标签的文本将变为白色,无论我为
列表视图
列表单元格
设置了什么
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:是的,我可以在我的示例中避免额外的标签,但在实际使用中,我有一个复杂的布局,包含
标签
和其他控件,例如
网格窗格
,所以我无法避免
标签
在那里……但是有什么方法可以防止默认的“白色”吗-要应用的样式?只需使用自定义样式覆盖默认样式。我添加了一个编辑。