我无法使用自己的数据填充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" )
);
稍后,我为&#39; ifIndex&#39;创建了一个列。数据成员:
TableColumn< SNMPInterface, String > ifIndexCol = new TableColumn<>( "Index" );
ifIndexCol.setCellValueFactory( new PropertyValueFactory<>( "ifIndex" ) );
...以及&#39; ifDescr&#39;:
的第二列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 );
......但这不起作用。
我有一个循环来验证数据是否可用于该方法,第二个验证数据是否已从文件中正确读入。两个容器似乎都有有效数据,但都没有进入我的表格。
我的表似乎与教程表有效,但很明显我在某个地方犯了错误。有谁看到我的错误在哪里?
答案 0 :(得分:3)
用于输入PropertyValueFactory的SNMPInterface类的getter和setter应该标记为public,而不是no modifier(否则PropertyValueFactory中固有的反射逻辑将找不到它们)。< / p>
public static class SNMPInterface {
private final SimpleStringProperty ifIndex;
private final SimpleStringProperty ifDescr;
SNMPInterface( String ifIndex, String ifDescr ) {
this.ifIndex = new SimpleStringProperty( ifIndex );
this.ifDescr = new SimpleStringProperty( ifDescr );
}
public String getIfIndex() {
return ifIndex.get();
}
public void setIfIndex( String index ) {
ifIndex.set( index );
}
public String getIfDescr() {
return ifDescr.get();
}
public void setIfDescr( String descr ) {
ifDescr.set( descr );
}
}