如何在没有任何数据模型的情况下向TableView添加行

时间:2017-03-16 17:51:36

标签: javafx-8

我对javafx很新,所以如果我的问题不清楚,请耐心等待。我有一个需要使用ObservableList填充的TableView。

下面的代码使用Map生成的arraylists填充我的“数据”,而这些arraylists又用于向我的表中添加行。

TableView<ArrayList> table = new TableView<>();

ObservableList<ArrayList> data = FXCollections.observableArrayList();

     for(int i=0;i<listSelectedVerticesIds.size();i++){
          ArrayList<String> tempString = new ArrayList<>();
                for(Map.Entry<String,String> temp2 : mapVertex.get(listSelectedVerticesIds.get(i)).entrySet()){
                    tempString.add(temp2.getValue());
                }
                data.add(tempString);           
            }
    table.setItems(data);

但是,我没有在“数据”中看到填充了列表的表格。我猜这是因为没有数据绑定(使用setCellValueFactory)。但是,正如您所看到的,我没有数据模型类。我的所有数据都来自Map as string,我想在tableview中填充。

请建议。

1 个答案:

答案 0 :(得分:0)

这是一种简单的方法,可以很好地完成它。您不需要数据结构来填充表。你只看到了,因为这是大多数例子所显示的。从数据库或文件填充表是一种非常常见的用例。我不明白为什么这么难找到例子。嗯,希望这会有所帮助。

private TableView<ObservableList<StringProperty>> table = new TableView<>();
private ArrayList<String> myList = new ArrayList<>();

private void updateTableRow() {
    for (int row = 0; row < numberOfRows; row++) {
        ObservableList<StringProperty> data = FXCollections.observableArrayList();
        for (int column = 0; column < numberOfColumns; column++) {
            data.add(column, new SimpleStringProperty(myList.get(row + (column * numberOfRows))));
        }
        table.getItems().add(data);
    }
}