2014-05-15 53 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