2016-11-03 3 views
1

Как найти запись в TableWie (например, через ID) и выбрать основанный Row и поместить ее в середину экрана в Java 8 (JavaFX).Поиск списка TableView в JavaFX

+0

Что означает «положить его в середину экрана в Java 8»? – Bartek

ответ

2

Если вы хотите найти Tableview это лучше всего сделать это:

  • Сортировка списка
  • Двоичный поиск или просто цикл проверки каждой строки или совпадает со значением Стремились

В список как ArrayList, чтобы вы могли все это сделать.

Пример LINK

+0

Наилучшим способом, вероятно, является обертка 'ObservableList'' TableView' в 'FilteredList', как указано в вашем llnk. –

+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); 
    }); 

Если у вас есть очень большое количество элементов в таблице, вам, возможно, потребуется реализовать более эффективный алгоритм поиска (например, сортировка по идентификатору и используйте двоичный поиск, как в ответе @ Бартек).