如何在javafx中的TableView中将值设置为单元格

San*_*til 1 javafx tableview

我是javafx的新手.我已经在核心java中编写代码来设置值.但现在我在javafx中转换我的项目以维护代码并改进设计.

我试图将值设置为表视图,但我没有得到如何设置值到tableview.

这是我用于挥杆的代码.

String testbedName = treePath.getPathComponent(1).toString();
    TestBed currentTestbed = getTbF().get(testbedName);
    propertyTable.getModel().setValueAt(currentTestbed.getTestBedName(), 0, 1);
    propertyTable.getModel().setValueAt(currentTestbed.getTestBedFilePath() + "\\" + testbedName + ".xml", 1, 1);
    propertyTable.getModel().setValueAt(currentTestbed.getTbElements().size(), 2, 1);  
Run Code Online (Sandbox Code Playgroud)

但我需要在javafx中将此代码转换为从JTable到TableView.但是tableview找不到getModel()方法.

我搜索但没有得到如何设置表视图的值.
请给我参考或提示.

提前致谢.

ass*_*ias 6

在JavaFX中,您通常不会像这样逐个单元格设置值.例如,在你的情况下,你会

  • 将TestBeds放在表中:

    TableView<TestBed> table = new TableView<>();
    table.getItems().addAll(yourTestBeds);
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后,您可以通过提供适当的单元值工厂来创建所需的列(使用Java 8语法):

    TableColumn<TestBed, String> name = new TableColumn<>();
    name.setCellValueFactory(c-> new SimpleStringProperty(c.getValue().getTestBedName()));
    
    Run Code Online (Sandbox Code Playgroud)

    如果您使用Java 7:

    name.setCellValueFactory(new Callback<CellDataFeatures<TestBed, String>, ObservableValue<String>>() {
        @Override public ObservableValue<String> call(CellDataFeatures<TestBed, String> c) {
            return new SimpleStringProperty(c.getValue().getTestBedName()));
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后,将列添加到表中:

    table.getColumns().addAll(name, someOtherColumn);
    
    Run Code Online (Sandbox Code Playgroud)

  • 是的,但他问的是如何编辑和设置特定单元格的值不是吗? (5认同)