【发布时间】:2016-09-06 01:10:36
【问题描述】:
我无法用我自己的数据填充 JavaFX TableView 对象。我试图修改the code found here 以适应我的程序的需要。 我添加了该教程中使用的表格,它可以正确显示。我复制了该代码以创建第二个表,但无法让我的数据显示在第二个表中。
我相信我已经正确修改了代码以接受来自我的 SNMPInterface 类的数据。我尝试用静态数据填充我的表,然后用从文件中读取的数据。这两个过程都不起作用,尽管它们都会创建具有正确标题的列。
My full project can be found on GitHub.
最初,我创建了一个“SNMPInterface”类对象的 TableView 对象:
private TableView< SNMPInterface > interfaceTableView = new TableView<>();
然后我创建一个 SNMPInterface 对象的 ObservableList:
private final ObservableList< SNMPInterface > interfaceData =
FXCollections.observableArrayList(
new SNMPInterface( "99", "testlo" ),
new SNMPInterface( "98", "testeth1" ),
new SNMPInterface( "97", "testeth2" ),
new SNMPInterface( "96", "testbond0" )
);
稍后,我为“ifIndex”数据成员创建一个列:
TableColumn< SNMPInterface, String > ifIndexCol = new TableColumn<>( "Index" );
ifIndexCol.setCellValueFactory( new PropertyValueFactory<>( "ifIndex" ) );
...以及“ifDescr”的第二列:
TableColumn ifDescrCol = new TableColumn( "Description" );
ifDescrCol.setCellValueFactory( new PropertyValueFactory<>( "ifDescr" ) );
然后我尝试将其添加到 GridPane(命名为 rootNode):
interfaceTableView.setItems( interfaceData );
interfaceTableView.getColumns().setAll( ifIndexCol, ifDescrCol );
rootNode.add( interfaceTableView, 0, 7, 2, 1 );
...但这不起作用。
我有一个循环来验证数据是否可用于该方法,还有一个循环来验证数据是否已从文件中正确读取。两个容器似乎都有有效数据,但都没有进入我的表格。
我的表似乎与教程表实际上相同,但显然我在某处犯了错误。有谁知道我的错误在哪里?
【问题讨论】:
-
你试过没有菱形构造函数的代码吗?
-
是的。它会导致“未经检查的调用”或“未经检查的分配”,具体取决于我移除的钻石。我没有发现任何钻石组合有效。
-
SNMPInterface是否有公共方法ifIndexProperty()和ifDescrProperty()? -
不,大卫。我只创建了 getter 和 setter 以及 toString() 的覆盖。但是,本教程没有类似的方法,它对我有用。