[英]Javafx - I cannot get data into a TableView
我无法用自己的数据填充JavaFX TableView对象。 我试图修改此处找到的代码以适合我的程序的需求。 我添加了该教程中使用的表,它可以正确显示。 我复制了该代码以创建第二个表,但是无法使我的数据显示在第二个表中。
我相信我已经正确修改了代码以接受来自SNMPInterface类的数据。 我尝试用静态数据填充表,然后再使用从文件读取的数据填充表。 尽管这两个过程都将创建具有正确标题的列,但两个过程均无效。
最初,我创建一个“ 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 );
...但是那行不通。
我有一个循环来验证数据是否可用于该方法,还有一个循环来验证是否已从文件中正确读取数据。 这两个容器似乎都有有效的数据,但是都没有进入我的表。
我的表似乎实际上与教程表相同,但显然我在某处出错。 有人看到我的错误在哪里吗?
用于输入PropertyValueFactory的SNMPInterface类的getter和setter应该标记为public,而不是没有修饰符 (否则,PropertyValueFactory固有的反射逻辑将找不到它们)。
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 );
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.