2017-05-18 4 views
0

TableViewからのデータをMapのコレクションに入れたいと思っています。各マップはテーブル内の行を表し、すべての表示可能な列のcolumnName-entry-pairsを含みます。JavaFX TableView:表示されている列からのみデータを収集

私にとっては難しい部分は、表示されている列からのみデータを取得することです。

テーブルビューでgetItems()と呼ぶことができましたが、どの列が表示されているかを確認するにはどうすればよいですか?

getColumns()では、どの列が表示されているかを確認できますが、どのようにして対応するデータを取得できますか?

最も簡単なことは、表示されているすべての列を反復処理する方法ですが、これを行う方法は見つけられません。

誰でも私に正しい方向のヒントまたはポインタを与えることができますか?私はこれをテストしていないのに

答えて

1

あなたは、これを試すことができます。

final ObservableList<Map<String, Object>> collection = FXCollections.observableArrayList(); 

tableView.getItems().forEach(item -> { 
    final Map<String, Object> itemMap = new HashMap<>(); 

    tableView.getVisibleLeafColumns().forEach(column -> { 
     itemMap.put(column.getText(), column.getCellObservableValue(item).getValue()); 
    } 
    collection.add(itemMap); 
}); 
+0

はあなたの助けをありがとうございました!これはまさに私が探していたものでした(特に "getCellObservableValue" - メソッド)。私のコードに合うように少し調整した後、それは完璧に動作します! (あなたの答えには2つの小さなタイプミスがありましたが、私はちょうど私自身で編集しました)。 – Tobi

+1

@Tobiそうですね、これらのコードをどのコードエディタにも入力していないのです... – Jai

+0

これは完璧です。私はとにかく作業コードを期待していませんでした。 getCellObservableValueメソッドについて私に知らせると、すでに私は幸せになっています。ほぼ完成したソリューションを得ることは素晴らしいことです:-) – Tobi

関連する問題