要在JavaFX的TableView中显示ArrayList<List<String>>
的值,你需要将数据模型绑定到TableView,并确保每一行对应一个List<String>
,每一列对应List<String>
中的一个元素。以下是实现这一功能的步骤和示例代码:
ObservableList
可以确保TableView在数据变化时自动更新。ArrayList<List<String>>
,适用于存储表格数据。以下是一个简单的示例,展示如何在JavaFX的TableView中显示ArrayList<List<String>>
的数据:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class TableViewExample extends Application {
public static class RowData {
private final ObservableList<String> data;
public RowData(ObservableList<String> data) {
this.data = data;
}
public ObservableList<String> getData() {
return data;
}
}
@Override
public void start(Stage primaryStage) {
TableView<RowData> tableView = new TableView<>();
// 假设这是你的ArrayList<List<String>>数据
ArrayList<List<String>> arrayList = new ArrayList<>();
arrayList.add(FXCollections.observableArrayList("A1", "B1", "C1"));
arrayList.add(FXCollections.observableArrayList("A2", "B2", "C2"));
arrayList.add(FXCollections.observableArrayList("A3", "B3", "C3"));
ObservableList<RowData> rowDataList = FXCollections.observableArrayList();
for (List<String> row : arrayList) {
rowDataList.add(new RowData(FXCollections.observableArrayList(row)));
}
tableView.setItems(rowDataList);
// 创建列并绑定到数据的相应属性
for (int i = 0; i < arrayList.get(0).size(); i++) {
final int columnIndex = i;
TableColumn<RowData, String> column = new TableColumn<>("Column " + (i + 1));
column.setCellValueFactory(cellData -> cellData.getValue().getData().get(columnIndex));
tableView.getColumns().add(column);
}
Scene scene = new Scene(tableView, 300, 250);
primaryStage.setTitle("TableView Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ObservableList
,并且在数据变化时调用了适当的更新方法。通过上述步骤和代码示例,你应该能够在JavaFX的TableView中成功显示ArrayList<List<String>>
的数据。
领取专属 10元无门槛券
手把手带您无忧上云