2016-11-03 9 views
1

TableWieで(IDなどを使用して)レコードを検索し、Found Rowを選択してJava 8(JavaFX)の画面の中央に配置する方法。JavaFXのTableViewリストを検索

+0

「Java 8の画面の中央に配置する」とはどういう意味ですか? – Bartek

答えて

2

あなたがのtableViewを検索したい場合は、これを行うのがベストです:

  • リスト
  • バイナリ検索または単にループチェックに各行を並べ替えたり値と一致するが

求めリストはArrayListであるため、すべてを行うことができます。

LINK

+0

最も簡単な方法はおそらく、llnkで述べたように 'FilteredList'に' TableView'の 'ObservableList'をラップすることです。 –

+0

表示される要素の順序を変更したくないので、並べ替える前にリストのコピーを作成することをお勧めします。 –

3

あなたが好きなものを使用して要素を検索することができます。

int searchId = ... ; 

table.getItems().stream().filter(item -> item.getId()==searchId).findAny() 

それからちょうど(存在する場合)の項目を選択するために、通常の方法を使用します。 TableViewはその項目が表示されているスクロールしますscrollTo(...)方法があります。

table.getItems().stream() 
    .filter(item -> item.getId() == searchId) 
    .findAny() 
    .ifPresent(item -> { 
     table.getSelectionModel().select(item); 
     table.scrollTo(item); 
    }); 

あなたは、テーブル内の項目の非常に多くを持っている場合は、より効率的な検索アルゴリズムを実装する必要があるかもしれません(例えば、ソートをidで@ Bartekの答えのようにバイナリ検索を使用する)。

関連する問題