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

时间:2013-12-12 15:31:34

标签: 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);  

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

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

提前致谢。

2 个答案:

答案 0 :(得分:6)

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

  • 将TestBeds放在表格中:

    TableView<TestBed> table = new TableView<>();
    table.getItems().addAll(yourTestBeds);
    
  • 然后通过提供适当的单元格值工厂(使用Java 8语法)创建所需的列:

    TableColumn<TestBed, String> name = new TableColumn<>();
    name.setCellValueFactory(c-> new SimpleStringProperty(c.getValue().getTestBedName()));
    

    如果您使用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()));
        }
    });
    
  • 最后,您将列添加到表中:

    table.getColumns().addAll(name, someOtherColumn);
    

答案 1 :(得分:1)

假设我们有一个包含两列的表,一列用于字符串,另一列用于数字。要以编程方式设置表格的第i个项目或行,我们可以这样做:

//Define the string
String s = "myString" ;
//Define the number
int value = 5;
//Synthesize the item = row
Item item = new Item(s, value);
//Set the i-th item
table.getItems().set(i, item);