繁体   English   中英

JavaFX-我无法将数据获取到TableView中

[英]Javafx - I cannot get data into a TableView

我无法用自己的数据填充JavaFX TableView对象。 我试图修改此处找到的代码以适合我的程序的需求。 我添加了该教程中使用的表,它可以正确显示。 我复制了该代码以创建第二个表,但是无法使我的数据显示在第二个表中。

我相信我已经正确修改了代码以接受来自SNMPInterface类的数据。 我尝试用静态数据填充表,然后再使用从文件读取的数据填充表。 尽管这两个过程都将创建具有正确标题的列,但两个过程均无效。

我的完整项目可以在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 );

...但是那行不通。

我有一个循环来验证数据是否可用于该方法,还有一个循环来验证是否已从文件中正确读取数据。 这两个容器似乎都有有效的数据,但是都没有进入我的表。

我的表似乎实际上与教程表相同,但显然我在某处出错。 有人看到我的错误在哪里吗?

用于输入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM