我開始使用JavaFX並希望使用新的樹視圖(因爲您可以使用多個圖標來表示您的數據 - 這是我希望利用的)。使用場景生成器創建JavaFX TreeView
我已經創建了一個基本的窗體/場景,它有一個樹形視圖和一個按鈕。當按下這個按鈕時,我希望填充樹視圖。
現在,我所看到的所有示例都是在代碼中生成窗體/場景的地方,並且樹視圖被綁定到該控件....我如何使用Scene builder預先設計窗體並從外部填充它碼?
我開始使用JavaFX並希望使用新的樹視圖(因爲您可以使用多個圖標來表示您的數據 - 這是我希望利用的)。使用場景生成器創建JavaFX TreeView
我已經創建了一個基本的窗體/場景,它有一個樹形視圖和一個按鈕。當按下這個按鈕時,我希望填充樹視圖。
現在,我所看到的所有示例都是在代碼中生成窗體/場景的地方,並且樹視圖被綁定到該控件....我如何使用Scene builder預先設計窗體並從外部填充它碼?
在場景構建器中的控件的根節點上設置類名稱(包括包)。如果您點擊,然後轉到右側的代碼選項卡,它是頂部字段。
現在在您的控件的TreeView上設置一個ID。
現在在控制器對象中添加一個TreeView字段,變量名稱應該與場景生成器中設置的TreeView ID相同。使用@FXML對字段進行註釋。
現在,當FXML被加載時,控制器被創建並且TreeView字段被設置。
您可以在控制器類中使用以下代碼。在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);
}
嗨,非常感謝您的回覆。它看起來像即時通訊做的所有這一切,因爲我已經仔細檢查了你提到的代碼,所以我認爲我現在遇到的問題是現場。我的場景從加載了空樹視圖的FXML文件中加載並設置。隨後我在netbeans中打開了'FXML登錄演示',場景正在被'replaceSceneContent'方法刷新。看起來我有更新或重新加載場景,當cahnges被做......這似乎是正確的? – user1673554
是的,我認爲您需要重新啓動,JavaFX不會自動識別FXML文件中的更改並重新加載,儘管您可以自行實現某些內容來實現此目的。 –