2015-11-05 94 views
0

我尝试在我的JavaFX应用程序中实现TreeView。但不幸的是没有项目显示,但我找不到问题。我寻找一些例子,并且喜欢它们。JavaFX Treeview显示没有项目

我在SceneBuilder中将一个TreeView控件放到了我的FXML文件中,并选择了生成的ControllerClass,并从该类中选择Treeview字段作为SceneBuilder中的TreeView控件的标识。

这是我的控制器代码:

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); 
    } 
} 

}

任何想法是什么错?

+0

请编辑您的问题以包含AddStream.fxml的内容。 – VGR

回答

0

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

+0

非常感谢,这是问题所在。 – kyromoto