Как выбрать элемент дерева в дереве, после проверки условия на этом элементе дерева, в Javafx

Я скачал проект familyTree, и у него нет возможности искать конкретного члена семьи!

Я добавил к нему кнопку поиска, и в разделе метода обработчика мне нужен код, который ищет члена с указанным socialID и выбирает его (прокрутите его до поля зрения и сделайте его синим (выделенным)). Но я не знаю, как программно выбрать элемент дерева и сделать его видимым и выбранным?

Мой код:

 @FXML
private void btnSearch_click(ActionEvent event){


    for(TreeItem<FamilyMember> treeItem:root.getChildren()){

              if(treeItem.getValue().getNationality().toString()=="22"){
                 // treeView.setSelectionModel(item);
                 treeView.getSelectionModel().select(treeItem);
                  //it still doesnt select the item with nationality=="22"
                break;
              }

    }
}

person omidXxX    schedule 31.05.2017    source источник
comment
Если ответ сработал, вы должны отметить его как правильный   -  person James_D    schedule 31.05.2017
comment
Пожалуйста, не превращайте свой вопрос в ответ. Если вы хотите добавить больше деталей для будущих читателей, пожалуйста, добавьте пост с ответом.   -  person halfer    schedule 01.06.2017


Ответы (1)


Вы можете выбрать элемент с помощью

treeView.getSelectionModel().select(item);

и если вам все еще нужно прокручивать (я думаю, что его выбор может автоматически прокручиваться до него), сделайте

treeView.scrollTo(treeView.getRow(item));

Пара замечаний:

  1. Я не понимаю цикл for. Почему вы это делаете

    TreeItem<FamilyMember> item = root.getChildren().get(i);
    

    а зачем вы создаете индекс i? Что не так с переменной treeItem, которую вы уже определили в синтаксисе цикла? Разве это не обязательно то же самое, что и item?

  2. Вам нужно прочитать Как мне сравнивать строки в Java?

person James_D    schedule 31.05.2017