【发布时间】:2018-08-30 02:22:16
【问题描述】:
我想创建一个动态表格视图,它从网页提供的 json 中获取其数据。问题是,每当来自 json 的数据超出范围时(例如,范围应该是 0.8 - 0.9,但它读取的是 1.1),表会自动使用“RED SQUARE”图像更新可观察列表。如果数据在范围内,则会显示“蓝色正方形”图像。它就像一个状态指示器,让用户知道数据是否正确。我有这个代码:
public ObservableList<PumpSites> list = FXCollections.observableArrayList(
new PumpSites (blue or red square image, "Canduman"),
new PumpSites (blue or red square image, "Cubacub"),
new PumpSites (blue or red square image, "Liloan"),
new PumpSites (blue or red square image, "Talamban"),
new PumpSites (blue or red square image, "Tisa")
);
status.setCellValueFactory(new PropertyValueFactory<PumpSites, String>("status"));
ps.setCellValueFactory(new PropertyValueFactory<PumpSites, String>("ps"));
table.setItems(list);
public class PumpSites {
private final SimpleStringProperty status;
private final SimpleStringProperty ps;
public PumpSites(String status, String ps){
super();
this.status = new SimpleStringProperty(status);
this.ps = new SimpleStringProperty(ps);
}
public String getStatus() {
return status.get();
}
public String getPs() {
return ps.get();
}
}
我从 json 获取数据没有问题。我计划将状态指示器的动态数据读取放在 platform.runlater 中,以便它始终更新。如何在表格中动态显示泵站点旁边的蓝色或红色方块?
【问题讨论】:
-
您是问如何定期自动刷新数据,或者如何随着数据的变化更新方块?
-
我知道如何使用platform.runlater,但是我不知道如何更新表的数据。我也不知道如何添加方形图像。
-
您的问题对于本网站来说可能过于宽泛(您似乎至少有 2-3 个一般性问题)。
-
但是,我会使用
javafx.concurrent.ScheduledService定期从远程源提取数据。然后,您可以完全替换TableView中的项目或刷新任何现有数据,同时添加新数据并删除不再存在的数据。要自定义TableColumn的TableCells,您可以使用cellFactory。对于值的有效性,在PumpSites中有一个ReadOnlyBooleanProperty也可能是有益的。将方块留给 UI(即TableCells)。您还应该考虑使用绑定。 -
请提供一个minimal reproducible example 来说明问题。