我是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()方法.
我搜索但没有得到如何设置表视图的值.
请给我参考或提示.
提前致谢.
在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)