我有一個通過FXML聲明的TabPane。我正在嘗試動態添加新選項卡。使用自己的FXML創建新選項卡
我創建了一個單獨的類對那些標籤:
public class DetailTab extends Tab {
我Controller.java正在產生新的DetailTabs並將它們添加到我的TabPane:
detailsPane.getTabs().add(new DetailTab(title));
內DetailTab.java,我我試圖用不同的FXML文件填充新選項卡的內容,具體取決於傳遞給DetailTab構造函數的String。
try {
System.out.println("Trying fxml");
this.setContent(FXMLLoader.load(getClass().getResource("tabUserComments.fxml")));
} catch (Exception e) {
e.printStackTrace();
}
這將創建一個NullPointerException。 tabUserComments.fxml文件與DetailTab.java一起位於項目的根目錄中。
什麼是做到這一點的最好方法是什麼?我甚至可以將內容從DetailTab本身內容設置爲FXML文件?如果可能的話,我想避免使用Controller來設置選項卡的內容。
你似乎想要部分視圖,我不認爲javafx支持,除了當你加載不同的fxml文件與相同的後備控制器,控制器的新實例將被創建,他們將不會共享相同的實例/狀態 – niceman
如果需要,我很高興爲每個單獨的選項卡的fxml創建單獨的控制器。如果我將其他控制器分配給tabUserComments.fxml,我注意到異常會被清除。 但是,現在我看到該選項卡仍未填充新的fxml數據。 – Zephyr
那麼有沒有更好的方法來填充一個單獨的fxml文件的選項卡?我計劃有很多標籤,並且希望單獨設計它們,而不是用每個代碼的所有不同代碼來膨脹我的DetailTab類。 – Zephyr