我试图了解如何使用 JavaFX,但很难理解如何用不同的颜色为 tableView 的不同行着色。
我有一个带有表格 View 的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,其他颜色行取决于数字有多大。
有缺陷的方法:
private void drawTableColor(){
//tableColumns[0] = new TableColumn("Spieltag");
//tableColumns[0].setCellValueFactory(new PropertyValueFactory<MyClass, String>("day"));
/*tableColumns[0].setCellFactory(column -> {
return new TableCell<MyClass,String>(){
@Override
protected void updateItem(String s, boolean empty){
super.updateItem(s, empty);
int i = Integer.parseInt(s);
System.out.println("TEST " +i);
if (i<=3){
setTextFill(Color.BLUE);
} else if (i==4){
setTextFill(Color.AZURE);
} else if (i <= 6){
setTextFill(Color.GREEN);
} else if (i == 16){
setTextFill(Color.ORANGE);
} else if (i>16){
setTextFill(Color.RED);
}
}
};
});*/
ObservableList<MyClass> data2 = FXCollections.observableArrayList(data);
tableView.setItems(null);
tableView.setItems(data2);
}
注释掉的部分给我带来了麻烦。它不会为该行着色,也不会在该列中显示任何内容。如果第一行被注释,它将跳过 updateItem 部分。 知道我做错了什么吗?
最佳答案
问题是您正在使用 settextfill() 相反,您应该设置背景的样式
private void drawTableColor(){
//tableColumns[0] = new TableColumn("Spieltag");
//tableColumns[0].setCellValueFactory(new PropertyValueFactory<MyClass, String>("day"));
/*tableColumns[0].setCellFactory(column -> {
return new TableCell<MyClass,String>(){
@Override
protected void updateItem(String s, boolean empty){
super.updateItem(s, empty);
int i = Integer.parseInt(s);
System.out.println("TEST " +i);
if (i<=3){
setStyle("-fx-background-color: blue");
} else if (i==4){
setStyle("-fx-background-color: azure");
} else if (i <= 6){
setStyle("-fx-background-color: green");
} else if (i == 16){
setStyle("-fx-background-color: orange");
} else if (i>16){
setStyle("-fx-background-color: red");
}
}
};
});*/
ObservableList<MyClass> data2 = FXCollections.observableArrayList(data);
tableView.setItems(null);
tableView.setItems(data2);
}
关于java - 如何为 TableView 的一行着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620377/