如何在新阶段弹出窗口时禁用主阶段

时间:2015-12-03 15:50:53

标签: java javafx javafx-8 fxml scenebuilder

我有弹出新阶段的按钮,但初级阶段不会禁用它仍然可以点击这样如何禁用主阶段。

这是我的舞台和场景代码

private static final Stage stage = new Stage();
    private static final Stage newstage = new Stage();
    /**
     *
     */

    @Override
    public void start(Stage primaryStage) throws Exception {
      Parent root = FXMLLoader.load(getClass().getResource("MainMenu.fxml"));
      Scene scene = new Scene(root);
      scene.getStylesheets().addAll(this.getClass().getResource("background.css").toExternalForm());
      stage.setScene(scene);
      stage.show();
    }

     public void chgScene (String str) throws Exception {
       Parent root = FXMLLoader.load(getClass().getResource(str));
       Scene scene = new Scene(root);
       stage.setScene(scene);
       stage.show();
    }

    public void addStage (String str) throws Exception {
       Parent root = FXMLLoader.load(getClass().getResource(str));
       Scene scene = new Scene(root);
       newstage.setScene(scene);
       newstage.setResizable(false);
       newstage.showAndWait();
    }

    public void clearStage () {
        newstage.close();
    }

如果有任何错误,那么对不起,因为我刚接触Java,我需要为我的项目创建一个GUI。谢谢你的帮助。

3 个答案:

答案 0 :(得分:4)

你需要添加这个:

 newstage.initModality(Modality.APPLICATION_MODAL);
 newstage.showAndWait();

请参阅Modality

答案 1 :(得分:0)

请注意,initModality()已损坏,并且已经在Linux平台运行时很长时间了。

modal JavaFX stage initOwner prevents owner from resizing, bug?

是的,该帖子直接引用initOwner(),但它是对initModality()的调用,似乎触发了bug。你可以浪费大量的时间来玩你所需行为的kludges,但似乎没有什么工作正常。

答案 2 :(得分:0)

JavaFx具有多种属性,您可以使用它,这取决于开发人员如何在逻辑上发挥创造力。

mainPane.setDisabled(true);
newPane.showAndWait();