单击按钮打开现有屏幕

问题描述 投票:0回答:1

我是 JavaFX 的初学者。我需要通过单击已创建的按钮打开另一个屏幕。为此,我尝试搜索,但没有得到任何有用的信息,因为我找到的每个教程都重定向以创建新屏幕。但我想打开已经创建的屏幕。

为此,我在controller.java中编写以下代码

@FXML
public void handleNewTestBedButtonAction(ActionEvent event) throws IOException {


    URL url = getClass().getResource("com/sobc/testbed/gui/testbedform.fxml");

    FXMLLoader fxmlloader = new FXMLLoader();
    fxmlloader.setLocation(url);
    fxmlloader.setBuilderFactory(new JavaFXBuilderFactory());
    AnchorPane pane = new AnchorPane();

    pane.getChildren().clear();
    pane.getChildren().add((Node) fxmlloader.load(url.openStream()));
    // here we go
    //((SOARiteController) fxmlloader.getController()).setContext();
}

fxml代码

<Button id="newtestbedbtn" fx:id="newTestBedButtonId" mnemonicParsing="false" onAction="#handleNewTestBedButtonAction" onMouseEntered="#NewTestBedButtonMouseEntered" onMouseExited="#NewTestBedButtonMouseExited" styleClass="imgbtn" text="" wrapText="false">

但是我遇到了以下异常

Caused by: java.lang.NullPointerException
at com.soab.SOARiteController.handleNewTestBedButtonAction(SOARiteController.java:52)  

如何在另一个屏幕上打开一个屏幕?

button javafx screen
1个回答
1
投票

使用以下代码替换您的 Fxml 加载器,这是加载 fxml 文件的正确方法。

URL url = getClass().getResource("com/sobc/testbed/gui/testbedform.fxml");
FXMLLoader loader = new FXMLLoader(url);
Node node = (Node) loader.load();
© www.soinside.com 2019 - 2024. All rights reserved.