【发布时间】:2017-03-08 04:04:52
【问题描述】:
我希望将单元格列设置为接收一个对象圆圈,以替换来自 observableList 中的数据库的值。该列中填充的值反映了另一列(假设 col A 和 B(从左到右)-它们基本上包含相同的信息,除了-我希望 col B 更改以表示圆形对象。这是我的代码到目前为止, 如有建议请指教。
status.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, Circle>, ObservableValue<Circle>>() {
@Override
public ObservableValue<Circle> call(TableColumn.CellDataFeatures<ObservableList, Circle> param) {
String c = (String) param.getValue().get(2); //getting all data in column 2 of the row
System.out.println(c);
switch(c){
case "High":
circle.setFill(Color.GREEN);
healthstatus.setStyle( "-fx-alignment: CENTER;");
break;
case "Medium":
circle.setFill(Color.YELLOW);
healthstatus.setStyle( "-fx-alignment: CENTER;");
break;
case "Low":
circle.setFill(Color.RED);
healthstatus.setStyle( "-fx-alignment: CENTER;");
break;
default:
circle.setFill(Color.BLUEVIOLET);
}
return new SimpleObjectProperty(circle);
}
});
我更喜欢继续我的代码,而不必创建一个类来响应设置值。
我已经附上了一张图片来展示我到目前为止的结果。
提前致谢! Image
【问题讨论】:
-
如果两列包含相同的信息,但显示方式不同,请为两者使用相同的
cellValueFactory。使用不同的cellFactory更改数据的显示方式。
标签: java javafx java-8 tablecolumn