2012-02-27 26 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