2012-09-15 98 views
2

我開始使用JavaFX並希望使用新的樹視圖(因爲您可以使用多個圖標來表示您的數據 - 這是我希望利用的)。使用場景生成器創建JavaFX TreeView

我已經創建了一個基本的窗體/場景,它有一個樹形視圖和一個按鈕。當按下這個按鈕時,我希望填充樹視圖。

現在,我所看到的所有示例都是在代碼中生成窗體/場景的地方,並且樹視圖被綁定到該控件....我如何使用Scene builder預先設計窗體並從外部填充它碼?

回答

0

在場景構建器中的控件的根節點上設置類名稱(包括包)。如果您點擊,然後轉到右側的代碼選項卡,它是頂部字段。

現在在您的控件的TreeView上設置一個ID。

現在在控制器對象中添加一個TreeView字段,變量名稱應該與場景生成器中設置的TreeView ID相同。使用@FXML對字段進行註釋。

現在,當FXML被加載時,控制器被創建並且TreeView字段被設置。

+0

嗨,非常感謝您的回覆。它看起來像即時通訊做的所有這一切,因爲我已經仔細檢查了你提到的代碼,所以我認爲我現在遇到的問題是現場。我的場景從加載了空樹視圖的FXML文件中加載並設置。隨後我在netbeans中打開了'FXML登錄演示',場景正在被'replaceSceneContent'方法刷新。看起來我有更新或重新加載場景,當cahnges被做......這似乎是正確的? – user1673554

+0

是的,我認爲您需要重新啓動,JavaFX不會自動識別FXML文件中的更改並重新加載,儘管您可以自行實現某些內容來實現此目的。 –

2

您可以在控制器類中使用以下代碼。在FXML文件中,您需要將FXID設置爲selectionTreeView。經過JDK 8u5測試,它工作正常。

@FXML 
TreeView selectionTreeView; 
@FXML 
private void handleButtonAction(ActionEvent event) { 
    createTree(); 
} 

public void createTree(String... rootItems) { 
    //create root 
    TreeItem<String> root = new TreeItem<>("Root"); 
    //root.setExpanded(true); 
    //create child 
    TreeItem<String> itemChild = new TreeItem<>("Child"); 
    itemChild.setExpanded(false); 
    //root is the parent of itemChild 
    root.getChildren().add(itemChild); 
    selectionTreeView.setRoot(root); 
}