我当前正在尝试将我的ObservableList的索引显示到TableView列。我发现的唯一解决方案是创建表面索引。但是我需要实际的索引,以便可以对TableView进行相应的排序。
cargoTable.setItems(um.getCargoList());
cargoTypeColumn.setCellValueFactory(new PropertyValueFactory<Cargo, CargoType>("cargoType"));
ownerColumn.setCellValueFactory(new PropertyValueFactory<Cargo, Customer>("owner"));
ownerColumn.setComparator(new Comparator<Customer>() {
@Override
public int compare(Customer o1, Customer o2) {
return o1.getName().compareToIgnoreCase(o2.getName());
}
});
sizeColumn.setCellValueFactory(new PropertyValueFactory<Cargo, Integer>("size"));
propertiesColumn.setCellValueFactory(new PropertyValueFactory<Cargo, String>("properties"));
hazardsColumn.setCellValueFactory(new PropertyValueFactory<Cargo, Hazard>("hazards"));
depositDateColumn.setCellValueFactory(new PropertyValueFactory<Cargo, Date>("date"));
我的TableView观察带有货物的列表,并且TableView中的每一列代表列表内货物的属性。一切工作正常,但我似乎无法找到一种方法来使用显示此列表索引的列。
任何帮助将不胜感激!预先感谢!
答案 0 :(得分:1)
这未经测试。
您可以为列使用自定义cellValueFactory
,并在其中添加一些不同的逻辑。类似于:
indexCol.setCellValueFactory(data -> {
Cargo item = data.getValue();
int index = table.getItems().indexOf(item);
return new SimpleStringProperty(Integer.toString(index));
});
这基本上是针对此列的内容,给我该单元格需要查看的项目,并根据表中的列表查找其索引,然后将其返回。
这应该可行,当然,您需要针对班级和列表的正确性进行编辑等。但是这个主意仍然存在。
希望这对您有用。