JavaFX Treeview不显示任何项目

时间:2015-11-05 16:27:14

标签: java treeview scenebuilder

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

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

那是我的控制器代码:

public class MainSceneController implements Initializable {

@FXML
TreeView<String> treeview;

@FXML
Button btn;

@Override
public void initialize(URL url, ResourceBundle rb) {
    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);

    this.treeview = new TreeView<>(root);

    treeview.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
}

@FXML
public void addTreeViewItem() {

}

@FXML
private void showAddStreamDialog() {
    try {

        Parent p;

        p = FXMLLoader.load(getClass().getResource("AddStream.fxml"));

        Scene s = new Scene(p);

        Stage stage = new Stage();

        stage.initModality(Modality.APPLICATION_MODAL);
        stage.setScene(s);
        stage.show();

    } catch (IOException ex) {
        Logger.getLogger(MainSceneController.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

任何想法都错了吗?

1 个答案:

答案 0 :(得分:0)

您不应该为this.treeview分配新实例,因为此字段已由FXLoader初始化。 因此,您只需设置根项this.treeview = new TreeView<>(root);

,而不是this.treeview.setRoot(root);