如何在JavaFX中使用String Arraylist填充TableView

问题描述 投票:1回答:1

我想用TableView填充String, String我只有两列。我不能这样做。到目前为止我尝试的是:

ObservableList<String> data = FXCollections.observableArrayList();
for (blabla){
data.addAll(Id,Name);
}
tableView.getItems().addAll(data);

而且没有任何表格。但是,当我做tableView.getItems()并打印它时,我看到了我添加的数据。但在桌面上,没有显示任何内容。

我创建我的列如下:

TableColumn idColumn = new TableColumn("Id");

TableColumn nameColumn = new TableColumn("Name");

我在互联网上看到一些例子,其中创建了一个对象来填充TableView,但我不想仅为表格视图创建一个类。有没有其他可能的方法来实现这一目标?

编辑:

我只是希望得到类似的东西:

ObservableList<String,String> data = FXCollections.observableArrayList(); 

for(int i = 1; i<blabla i++){
data.add((i)+"S",myList.get(i));
}
java javafx tableview javafx-8
1个回答
1
投票

首先,您必须在FXML文件中或从代码中创建table'c列。之后,您必须创建单元格值工厂,它将生成包含数据的列。

例如:

@FXML
private TableView<String> tableView;

@FXML
private TableColumn<String, String> columnOne;

@FXML
private TableColumn<String, String> columnTwo;

columnOne.setCellValueFactory(c -> new SimpleStringProperty(new String("123")));

columnTwo.setCellValueFactory(c -> new SimpleStringProperty(new String("456")));

没有FXML:

private TableView<String> table = new TableView<String>();

TableColumn columnOne = new TableColumn("One");
TableColumn columnTwo = new TableColumn("Two");

table.getColumns().addAll(columnOne, columnTwo);

columnOne.setCellValueFactory(c -> new SimpleStringProperty(new String("123")));
columnTwo.setCellValueFactory(c -> new SimpleStringProperty(new String("456")));

table.getItems().addAll("Column one's data", "Column two's data");
© www.soinside.com 2019 - 2024. All rights reserved.