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