Listview 行颜色javafx列表视图
我的ListView控件有问题。我想我的奇数行和偶数行有不同的颜色,但我想从代码而不是从FXML来做。例如: 第一行-颜色为绿色 第二排-颜色为红色 第三行-彩色格伦 第四排-红色 现在我有类似的东西,但这改变了所有ListView的背景,而不是单行Listview 行颜色javafx列表视图,listview,javafx,Listview,Javafx,我的ListView控件有问题。我想我的奇数行和偶数行有不同的颜色,但我想从代码而不是从FXML来做。例如: 第一行-颜色为绿色 第二排-颜色为红色 第三行-彩色格伦 第四排-红色 现在我有类似的东西,但这改变了所有ListView的背景,而不是单行 rightListView.setCellFactory(param -> new ListCell<Group>() { @Override protected void updateItem(G
rightListView.setCellFactory(param -> new ListCell<Group>() {
@Override
protected void updateItem(Group item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || item.getName() == null) {
setText(null);
} else {
setText(item.getName());
}
for(int k=0;k<rightListView.getItems().size();k++) {
if (k%2==0)
setStyle("-fx-background-color: blue;");
else
setStyle("-fx-background-color: red;");
}
}
});
如何解决此问题?实现此结果的最简单方法是CSS样式表:
scene.getStylesheets().add("style.css");
样式表
.列表视图.列表单元格:奇数{
-背景色:红色;
}
.列表视图.列表单元格:偶数{
-背景色:蓝色;
}
您可能需要将.list视图选择器替换为选择应应用此样式的ListView的选择器。这样做的好处是,与使用代码相比,您可以更轻松地保持:selected样式
.列表视图.列表单元格:奇数{
-背景色:红色;
}
.列表视图.列表单元格:偶数{
-背景色:蓝色;
}
.列表视图.列表单元格:选中:奇数,
.列表视图.列表单元格:选定:偶数{
-fx背景色:-fx背景;
}
但是,如果要在java代码中使用setStyle应用样式,则应在updateItem中使用getIndex:
rightListView.setCellFactory(param -> new ListCell<Group>() {
@Override
protected void updateItem(Group item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setStyle(null);
} else {
setText(item.getName());
setStyle(getIndex() % 2 == 0 ? "-fx-background-color: blue;" : "-fx-background-color: red;");
}
}
});