代码之家  ›  专栏  ›  技术社区  ›  Jeredriq Demas

如何在JavaFX中使用字符串Arraylist填充TableView

  •  2
  • Jeredriq Demas  · 技术社区  · 7 年前

    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");
    

    我在internet上看到一些示例,其中创建了一个对象来填充 表格视图 但我不想只为表视图创建一个类。有没有其他可能的方法来实现这一点?

    编辑:

    我只想有这样的东西:

    ObservableList<String,String> data = FXCollections.observableArrayList(); 
    
    for(int i = 1; i<blabla i++){
    data.add((i)+"S",myList.get(i));
    }
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Ansaldos    7 年前

    首先,您必须在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");