在TableView列JavaFX

时间:2018-11-29 21:25:57

标签: javafx indexing tableview

我当前正在尝试将我的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中的每一列代表列表内货物的属性。一切工作正常,但我似乎无法找到一种方法来使用显示此列表索引的列。

任何帮助将不胜感激!预先感谢!

1 个答案:

答案 0 :(得分:1)

这未经测试。

您可以为列使用自定义cellValueFactory,并在其中添加一些不同的逻辑。类似于:

indexCol.setCellValueFactory(data -> {
    Cargo item = data.getValue();
    int index = table.getItems().indexOf(item);
    return new SimpleStringProperty(Integer.toString(index));
});

这基本上是针对此列的内容,给我该单元格需要查看的项目,并根据表中的列表查找其索引,然后将其返回。

这应该可行,当然,您需要针对班级和列表的正确性进行编辑等。但是这个主意仍然存在。

希望这对您有用。