java如何在JavaFX中用ObservableMap<KeyObject,ObservableList<CustomObject>>填充TableView
我的Java程序生成了大量数据,我用这些数据构造了单独的ResultObject。因为只有特定的ResultsObjects会引起兴趣,所以我填充了一个ObservableHashMap<>;和我的结果。CustomObject由几个int+double和一个JSONObject组成。有了这个CustomObject,我想把类似的ResultObject(它们有一些共同的属性)映射到这个CustomObject
虽然映射和处理这些结果可以按预期的方式工作,但我很难用ObservableHashMap填充TableView<>
My CustomObject(如果两个CustomObject具有相同的属性,只需检查JSONObject):
public CustomObject(Simulation data) {
this.datapoint1 = data.datapoint1;
this.datapoint2 = data.datapoint2;
this.jsonCompareObject = new JSONObject()
.put("datapoint1", data.datapoint1)
.put("datapoint1", data.datapoint2);
}
我的ObservableHashMap对象:
private ObservableMap <CustomObject, ObservableList<Simulation>> topResultsList;
public SomeObjectWithObservableMap(){
this.topResultsList = FXCollections.observableHashMap();
}
通过使用下面的代码,我检查是否有一个已经存在相应数据点的键,然后将其添加到ObservableList(值)中:
private boolean isKeyPresent(CustomObject newCustomObject, Simulation data) {
for (CustomObject oldCustomObject : this.topResultsList.keySet()) {
if (oldCustomObject.jsonCompareObject.toString().equals(newCustomObject.jsonCompareObject.toString())) {
this.topResultsList.get(oldCustomObject).add(data);
return true;
}
}
return false;
}
我填充了其他一些TableView,如下所示:
{
tableColumn.setCellValueFactory(new PropertyValueFactory<>("datapoint1"));
tableColumn.setCellFactory(TextFieldTableCell.<SomeObject, Double>forTableColumn(twoDigits));
tableView.setItems(someObject.getObservableList());
}
最后,我想要一些TableColumns来显示CustomObject的属性。稍后,我希望在单独的表视图中显示选定CustomObject的单个映射ObservableList
我对Java和JavaFX非常陌生,我希望尽可能专业地描述我的问题。如果我错过了什么,请告诉我
# 1 楼答案
用一个
Map<String,String>
创建TableView
的另一种方法是:Main。java
映射表。java