Java 如何为TableView的一行着色?
我试图理解如何使用JavaFX,但很难理解如何用不同的颜色为tableView的不同行着色 我有一个带有tableview的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,另一个选项根据数字的大小为行添加颜色 有缺陷的方法:Java 如何为TableView的一行着色?,java,javafx,colors,tableview,cell,Java,Javafx,Colors,Tableview,Cell,我试图理解如何使用JavaFX,但很难理解如何用不同的颜色为tableView的不同行着色 我有一个带有tableview的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,另一个选项根据数字的大小为行添加颜色 有缺陷的方法: private void drawTableColor(){ //tableColumns[0] = new TableColumn("Spieltag"); //tableColumns[0].setCellValueFactory(n
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);
}
private void drawTableColor(){
//tableColumns[0]=新的TableColumn(“Spieltag”);
//tableColumns[0].setCellValueFactory(新属性值工厂(“日”);
/*tableColumns[0]。setCellFactory(列->{
返回新的TableCell(){
@凌驾
受保护的void updateItem(字符串s,布尔值为空){
super.updateItem(s,空);
int i=整数.parseInt(s);
系统输出打印项次(“测试”+i);
如果(i问题是您使用的是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);
}
private void drawTableColor(){
//tableColumns[0]=新的TableColumn(“Spieltag”);
//tableColumns[0].setCellValueFactory(新属性值工厂(“日”);
/*tableColumns[0]。setCellFactory(列->{
返回新的TableCell(){
@凌驾
受保护的void updateItem(字符串s,布尔值为空){
super.updateItem(s,空);
int i=整数.parseInt(s);
系统输出打印项次(“测试”+i);
如果(i)在updateItem
方法中确实缺少setText
,并且在尝试执行Integer.parseInt
之前,您需要(至少)检查单元格是否为空(否则您将尝试解析空值)。如果这仍然不起作用,您需要发布MyClass
的代码。谢谢,这有助于我填写该列。