javafx - 为什么我的 Stage.close 不起作用

标签 javafx stage

Stage.close() 对我不起作用。

我已经检查过: JavaFX 2.0: Closing a stage (window)

这是我的代码:

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.stage.Modality;

public class MsgBox {

    public Stage MessageBox(String Title, String Message){

        VBox Pnl = new VBox();
        Pnl.setPadding(new Insets(10,10,10,10));
        Pnl.setSpacing(10);
        Pnl.setAlignment(Pos.CENTER);

            Label LblMsg = new Label(Message);
            Button CmdOK = new Button("OK");

        Pnl.getChildren().addAll(LblMsg, CmdOK);

        Scene SCN = new Scene(Pnl);

        Stage Window = new Stage();
            Window.initModality(Modality.APPLICATION_MODAL);
            Window.setTitle(Title);
            Window.setScene(SCN);
            Window.showAndWait();


        CmdOK.setOnAction(new EventHandler<ActionEvent>(){
            public void handle(ActionEvent ev){
                Window.close();
            }
        });

        return Window;
    }
}

下面是调用消息框类的代码:

CmdUpdate.setOnAction(new EventHandler<ActionEvent>(){
        public void handle(ActionEvent ev){
            new MsgBox().MessageBox("Hello", "Hello World");

        }
 });

最佳答案

调用Stage#showAndWait会等到阶段关闭后再返回,因此实际上下一行永远没有机会运行。

移动线

Window.showAndWait();

成为方法中的最后一个(至关重要 - 在设置处理程序以允许关闭舞台之后),或者只需使用 Stage#show ,您的问题应该得到解决。

关于javafx - 为什么我的 Stage.close 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37303870/

相关文章:

linux - Java 1.8.0_77 中的 Linux 上缺少 jfxrt.jar

没有阶段的 JavaFx FileChooser

apache-spark - 解释 Spark Stage 输出日志

JavaFX 位置未设置错误消息

java - JavaFX 中的 svg 到 -fx-shape

javafx.scene.layout.Pane 无法转换为 javafx.fxml.FXMLLoader

actionscript-3 - AIR - 设置 NativeWindow 的大小以包含系统镶边

java - 在 LibGDX 中,当 setFillParent 为 true 时,Actor 的位置是错误的

java - ReactFX Val,如何获得空状态的绑定(bind)?

带有复选框的Javafx 8 Tableview选择