2012-02-27 62 views
2

我以javafx开头。我有一个问题。我有一个树形结构,其中节点通过外部命令改变其位置,但它只是看不到树。我必须尽量减少父母并重新展开以查看效果。 虽然树视图的任何建议都可以刷新为代码。更新树形视图中的JavaFX节点

Exempo代码:

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

对不起,我的英语和感谢花费的时间。

回答

3

您在树视图中遇到一个问题: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; 
} 
+0

感谢花费的时间。问题解决 – jmspinto 2012-03-15 11:28:56

+1

@jmspinto确保你记得要将谢尔盖的答案标记为“正确”,如果解决方法为你工作。 – Andrey 2012-09-04 04:56:15