在树视图中更新JavaFX节点

时间:2012-02-27 19:06:51

标签: treeview javafx-2

我在javafx开始我。我有一个问题。我有一个树视图,其中节点通过外部命令更改其位置,但它只是看不到树。我必须最小化父级并重新扩展才能看到效果。 Altem对该树视图的任何建议都可以作为代码刷新。

免除代码:

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 个答案:

答案 0 :(得分:3)

您在TreeView中遇到了一个问题:http://javafx-jira.kenai.com/browse/RT-20090

现在你可以使用下一个解决方法(对于第二次树操作实际上只有50ms延迟):

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