2016-05-10 8 views
1

JavaFX TableViewオブジェクトに自分自身のデータを取り込むことができません。プログラムのニーズに合わせてthe code found hereを修正しようとしました。 このチュートリアルで使用したテーブルを追加し、正しく表示します。そのコードをコピーして2番目のテーブルを作成しましたが、2番目のテーブルにデータを表示することができません。Javafx - データをTableViewに取得できません。

私はSNMPInterfaceクラスからのデータを受け入れるようにコードを適切に変更したと信じています。私は静的なデータでテーブルを作成しようとし、後でファイルからデータを読み込もうとします。いずれのプロセスも機能しませんが、どちらの場合でも適切なヘッダーで列が作成されます。

My full project can be found on GitHub

は当初、私は「SNMPInterface」クラスオブジェクトのテーブルビューオブジェクトを作成します。

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 'の2番目の列:

TableColumn ifDescrCol = new TableColumn("Description"); 
ifDescrCol.setCellValueFactory(new PropertyValueFactory<>("ifDescr")); 

私は、(ルートノードの名前)GridPaneに追加してみてください。

interfaceTableView.setItems(interfaceData); 
interfaceTableView.getColumns().setAll(ifIndexCol, ifDescrCol); 
rootNode.add(interfaceTableView, 0, 7, 2, 1); 

...しかし、それは動作しません。

私はデータは、データが正しくファイルから読み込まれていることを確認する方法、および第二に利用可能であることを確認するためのループを持っています。両方のコンテナは有効なデータを持っているようですが、どちらもそれを自分のテーブルに入れません。

私のテーブルには、効果的に、チュートリアルのテーブルと同じのようですが、明らかに私はどこかのエラーを作っています。誰が私のエラーがどこに見えるのですか?

+0

ダイヤモンドコンストラクタなしでコードを試しましたか? –

+0

はい。それは私が削除するダイヤモンドに応じて、 "チェックされていない呼び出し"または "チェックされていない割り当て"になります。ダイヤモンドの組み合わせは、私は動作することが判明していることはありません。 –

+0

'SNMPInterface'は' ifIndexProperty() 'と' ifDescrProperty() 'というpublicメソッドを持っていますか? –

答えて

3

PropertyValueFactoryへの入力に使用するSNMPInterfaceクラスのゲッターとセッターは、no modifierではなく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); 
    } 
} 
+0

それはそれでした!どうもありがとうございます。 –

関連する問題