在JavaFX&在Scene Builder中,如何在单击按钮时打开新窗口?

时间:2014-05-16 21:20:36

标签: java javafx scenebuilder

我已经获得了第二个窗口的FXML文件,我从这里丢失了。按下按钮后如何让我的程序打开新窗口和FXML?

这就是我设置第一个窗口的方法

@Override 
public void start(Stage primaryStage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("Main.fxml")); 
    Scene scene = new Scene(root); primaryStage.setResizable(false);    
    primaryStage.setScene(scene); 
    primaryStage.setTitle("Hello World!"); 
    primaryStage.show(); 
} 

所以我可以复制,但更改新窗口的值?然后我如何将其链接到我的按钮?我尝试了一些事件处理程序,但无济于事。

1 个答案:

答案 0 :(得分:0)

如果您使用FXML,则按钮上有一个名为onAction的属性。您可以在场景构建器的“代码”部分中找到它,也可以直接在.fxml文件中找到它。 你只需输入一个方法的名称。

然后,您需要在场景的控制器类中创建此方法。如果您尚未为场景创建控制器,则只需在场景的根元素中设置属性“controller”,就像使用按钮的onAction一样。

在您创建的方法中,您只需键入代码即可打开新场景,如下所示:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/org/yourcompanyname/yourapplicationname/layouts/nameOfYourFxmlFile.fxml"));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setOpacity(1);
stage.setTitle("My New Stage Title");
stage.setScene(new Scene(root, 450, 450));
stage.showAndWait();