我有一个通过FXML声明的TabPane。我正在尝试动态添加新标签。
我为这些标签创建了一个单独的类:
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来设置选项卡的内容。
答案 0 :(得分:0)
我可以通过在DetailsTab.java类中使用以下代码来获得部分解决方案:
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("tabUserComments.fxml"));
loader.setController(this);
this.setContent(loader.load());
} catch (Exception e) {
e.printStackTrace();
}
这仍然会导致问题,因为我无法访问tabUserComments.fxml控件中包含的数据。然而,我会将此标记为已回答,因为数据传递完全是另一个问题;这确实允许使用单独的FXML文件设计每个选项卡。