2014-05-15 54 views
0

自定義組件我有一個類MyTreeTableView延伸TreeTableView擴展JavaFX的8 TreeTableView

我已經implmented一些方法在我的派生類,這是不是在原來的TreeTableView可通過可觀察到的列表來填充樹視圖。除此之外,沒有其他功能。

我可以使用這個類,並在Java中

MyTreeTableView localtree = new MyTreeTableView(new TreeItem<>()); 
localtree.setItems(myobservedList); 

編碼時,如果我這個實例添加到場景中的所有作品就像一個標準T​​reeTableView它按預期工作。要添加這個實例到現場我必須在Java端做這個。

我必須將我的MyTreeTableView類放入一個自定義的FXML組件中,以便使用它可訪問的場景生成器以方便拖放。我試圖將localtreetable分配給FXML中定義的標準Java FX 8 TreeTableView,它是現有場景的一部分。

我做了以下

localtreetable.getColumns().addAll(col1,col2); 
     localtreetable.setShowRoot(false); 
     localtreetable.setItems(myobservedList); 
     JavaFX8TreeTableView.setRoot(localtreetable.getRoot()); 
     col1 = (TreeTableColumn<Object, String>) JavaFX8TreeTableView.getColumns().get(0); 
     col2 = (TreeTableColumn<Object, String>) JavaFX8TreeTableView.getColumns().get(1); 

//setCellValueFactory and CellFactories for col1 and col2 after this. 

這裏col1col2都在FXML定義,他們這也是在FXML定義的JavaFX8TreeTableView的列。

通過這個攻擊,JavaFX8TreeTableView會在UI上顯示對象中填充的數據。然而,用戶界面不正確,樹視圖混亂。當我說亂七八糟的時候,樹的順序是正確的,但是>被放在樹項目的第4個字母上,並且點擊箭頭不會展開或關閉樹項目,您必須在其他項目上單擊它它可以擴展和關閉它的位置。 enter image description here 我的第一個問題是,我怎麼轉值從localtreetable到JavaFx8TreeTableView,這樣我可以填充值已經定義TreeTableView

回答

0

當遷移到Java8,有臭蟲了JavaFX 2.2,而填充TreeItem, branchExpand和branchCollapse事件,一些如何有空TreeItem正在增加。您可以通過明確編寫 setGraphic(null)來修復該錯誤; setText(null); in updateItem函數

public void updateItem(String item,boolean empty){ super.updateItem(item,empty);

 if (empty) { 
      setText(null); 
      setGraphic(null); 
     } else { 
      if (isEditing()) { 
       if (textField != null) { 
        textField.setText(getString()); 
       } 
       setText(null); 
       setGraphic(textField); 
      } else { 
       setText(getString()); 
       setGraphic(getTreeItem().getGraphic()); 
       if (
        !getTreeItem().isLeaf()&&getTreeItem().getParent()!= null 
       ){ 
        setContextMenu(addMenu); 
       } 
      } 
     } 

參考 http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/tree-view.htm#BABDEADA