jiexihuanyufei 2023-11-06 15:40 采纳率: 0%
浏览 6

JavaFx的stage的Close()

我有点不知所措。 我发现,当Stage执行close()时,我发现源代码执行了hide(),

img


这导致了我的

img


永远不会被执行。 只有点击窗口右上角的“关闭”才会执行,执行stage.close()是不起作用的。

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-11-06 15:44
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    在JavaFX中,当你调用stage.close()时,它会触发一个关闭事件。这个事件会执行StageonCloseRequest方法(如果存在的话)。如果你希望在关闭窗口时执行某些操作,你可以在onCloseRequest方法中添加相应的代码。

    例如,如果你想在关闭窗口时隐藏窗口并释放资源,你可以这样做:

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            Label label = new Label("Hello, JavaFX!");
            StackPane root = new StackPane();
            root.getChildren().add(label);
    
            Scene scene = new Scene(root, 300, 250);
    
            primaryStage.setTitle("JavaFX Close Example");
            primaryStage.setScene(scene);
            primaryStage.show();
    
            primaryStage.setOnCloseRequest(event -> {
                // 在这里执行你想要的操作,例如隐藏窗口和释放资源
                System.out.println("Window is closing...");
                event.consume(); // 阻止默认的关闭行为
            });
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    在这个例子中,我们在start方法中为primaryStage设置了一个onCloseRequest事件处理器。当用户点击窗口右上角的“关闭”按钮时,这个处理器会被调用。在处理器中,我们可以执行我们想要的操作,例如隐藏窗口和释放资源。注意,我们需要调用event.consume()来阻止默认的关闭行为,这样窗口就不会立即关闭了。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 11月6日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊