Обновите узлы JavaFX в виде дерева - PullRequest
2 голосов
/ 27 февраля 2012

Я начинаю меня в javafx. И у меня есть проблема. У меня есть древовидная структура, где узлы меняют свою позицию по внешней команде, но она просто не видит дерево. Я должен свести к минимуму родительский и повторно расширить, чтобы увидеть эффект. Любые предложения для этого дерева могут быть обновлены в виде кода.

Пример кода:

public Boolean SobeNodo()
{
    TreeItem<TreeNodo> oNodoSel = this.getSelectionModel().getSelectedItem();

    if (oNodoSel != null)
    {
         TreeItem<TreeNodo> oNodoPai = oNodoSel.getParent();
          if (oNodoPai != null)
          {
             int nIndex = oNodoPai.getChildren().indexOf(oNodoSel);
             if (nIndex > 0)
             {
                oNodoPai.getChildren().removeAll(oNodoSel);

                oNodoPai.getChildren().add(nIndex - 1, oNodoSel);

                return true;
             }
           }
    }
    return false;
}

Извините за мой английский и спасибо за потраченное время.

1 Ответ

3 голосов
/ 06 марта 2012

Вы столкнулись с проблемой в TreeView: http://javafx -jira.kenai.com / browse / RT-20090

На данный момент вы можете использовать следующий обходной путь (на самом деле это всего лишь 50 мсзадержка для второй операции с деревом):

if (nIndex > 0) {
    oNodoPai.getChildren().removeAll(oNodoSel);

      TimelineBuilder.create().keyFrames(
        new KeyFrame(Duration.millis(50), new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent t) {
                oNodoPai.getChildren().add(nIndex - 1, oNodoSel);
            }
        })).build().play(); 

    return true;
}
...