【发布时间】:2016-09-17 15:54:01
【问题描述】:
对不起,我是 JavaFX 的新手。 我的设置: 我有一个始终显示的主要 FXML GUI。在这个主 GUI 中,我在 AnchorPane 中加载了另一个 FXML。
第二个 FXML 最初使用以下方法加载到此 AnchorPane(位于主 GUI 中):
@FXML
private AnchorPane rootSetPane;
然后我从那里使用rootSetPane。
这是位于同一主 GUI fxml 中的 AnchorPane。
<AnchorPane fx:id="rootSetPane" layoutX="228.0" prefHeight="710.0" prefWidth="887.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="228.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
初始化主控制器(主GUI一直显示)
@Override
public void initialize(URL url, ResourceBundle rb) {
AnchorPane paneHome;
try {
paneHome = FXMLLoader.load(getClass().getResource("HomePage.fxml"));
rootSetPane.getChildren().setAll(paneHome);
} catch (IOException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
此主类中的工作方法示例(从同一主 FXML 中的按钮调用):
@FXML
private void foodFinder(ActionEvent event) throws IOException {
AnchorPane paneFoodFinder = FXMLLoader.load(getClass().getResource("ScreenFoodFinder.fxml"));
rootSetPane.getChildren().setAll(paneFoodFinder);
}
一个不起作用的方法示例(使用对象调用):
public void setPanel() throws IOException {
AnchorPane newPane = FXMLLoader.load(getClass().getResource("NewPane.fxml"));
rootSetPane.getChildren().setAll(newPane);
}
我在程序期间使用主 GUI 中的按钮多次设置了第二个窗格(这有效)。尝试从主控制器类外部设置此窗格时会出现问题。我不能使用 Main 类的实例并调用方法来访问 rootSetPane(我不能使 rootSetPane 静态)。我收到了NullPointerException。我确信这是一个业余错误。有没有办法可以使用上述方法更改此rootSetPane。
或者我必须创建其他类来管理我的屏幕。最简单(甚至肮脏)的解决方案将不胜感激。
如果我能够在主 GUI 中触发按钮,它也会起作用,但这会导致相同的问题 (NullPointerException)。我有一种感觉,我不能使用类的对象来引用元素,我也不能使这些元素成为静态的。
【问题讨论】:
标签: java javafx fxmlloader