javaFX - Treeview在SplitPane中没有显示任何项目

时间:2017-05-24 08:45:06

标签: javafx treeview javafx-2 javafx-8 fxml

我尝试在JavaFX App中实现TreeView。但不幸的是没有展示任何项目,但我找不到问题。我搜索了一些例子,就像他们一样。

我将TreeView控件放到SceneBuilder中的FXML文件中,并选择生成的ControllerClass,并从此类中选择Treeview字段作为SceneBuilder中TreeView控件的id。

我检查了这个问题,其中错误是分配了一个新的TreeView实例,但这不是我的问题,因为我直接设置了root。

那是我的控制器代码:

public class FXMLDocumentController implements Initializable {
    @FXML
    private Label label;
    @FXML
    private TreeView<String> treeView;
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        TreeItem<String> root = new TreeItem<>("root");
        for (int i = 0; i < 10; i++) {
            TreeItem<String> child = new TreeItem<>("Children " + i);
            root.getChildren().add(child);
        }
        root.setExpanded(true);
        treeView.setRoot(root);// = new TreeView<String> (rootItem);  
        treeView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }
}

我的FXML代码:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <SplitPane dividerPositions="0.29797979797979796" layoutX="134.0" layoutY="154.0" prefHeight="600.0" prefWidth="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
               <children>
                  <TreeView fx:id="treeView" layoutX="39.0" layoutY="61.0" prefHeight="598.0" prefWidth="235.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
               </children>
            </AnchorPane>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
        </items>
      </SplitPane>
   </children>
</AnchorPane>

1 个答案:

答案 0 :(得分:0)

您尚未在FXML中指定控制器类。添加

fx:controller="my.package.FXMLDocumentController"

到FXML文件中的根元素(将my.package替换为FXMLDocumentController所在的实际包。)