2015-11-05 96 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