2016-12-11 9 views
0

JavaFXでTableViewで表示する膨大な量のデータがあります。 JavaFX 8 Sortung Filteringの助けを借りて、私は入力(TextField)に応じてフィルタを実装することができました。エントリが持つことができる状態はほんのわずかなので、チェックボックスを使ってquickselectを作成したいと思っています。
例:「進行中」または「完了」の状態のすべての行を表示する場合。そこで、彼は特定の状態の2つのチェックボックスをチェックします。Javafx update tableview onチェックボックスの変更

特定のリスナーを実装する必要があります。テーブルビューでフィルタリングされたデータのみを表示するにはどうすればよいですか。これまで

マイコード:

ChangeListener<Boolean> cbStateChangeListener = new ChangeListener<Boolean>() { 
    @Override 
     public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) { 
      if (new_val){ 

      } 
     } 
    }; 

どのようにif文で進行するには?

答えて

1

チェックボックスの現在の状態を使用してビューの塗りつぶしを再適用しますか?

+0

これはおそらく非常に良いアプローチではありません。 OPはすでに「FilteredList」を使用しているので、フィルタの述語を変更するだけで効率的です。リストを最初から再作成すると、選択などの重要な状態が失われます。 –

1

プロパティをFilteredListにバインドするだけで、選択したプロパティを持つバインディングを依存関係としてバインドできます。たぶん

あなたは以下のオブジェクト電気ショック療法を使用し、これを最適化することができるでしょう、しかし、おそらくyou aren't gonna need that.

private Predicate<MyItemType> createPredicate() { 
    ... 
} 
ところで
filteredList.predicateProperty().bind(Bindings.createObjectBinding(this::createPredicate, checkBox1.selectedProperty(), checkBox2.selectedProperty(), ...)); 

:。関連するPredicateを組み合わせるためにPredicate.orを使用すると便利かもしれませんそれぞれが選択されたCheckBox

関連する問題