我试图了解如何使用JavaFX,但很难理解如何为不同颜色的tableView着色。
我有一个带有tableview的场景,根据radiobuttons获取不同的数据。一个选项显示没有颜色的数据,其他颜色行显示数量的大小。
有缺陷的方法:
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);
}
out评论部分给了我麻烦。它不会对行进行着色,也不会在此列中显示任何内容。如果第一行被注释,它会跳过updateItem部分。 知道我做错了吗?
答案 0 :(得分:1)
问题是你使用的是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);
}