我有点不知所措。 我发现,当Stage执行close()时,我发现源代码执行了hide(),
这导致了我的
永远不会被执行。 只有点击窗口右上角的“关闭”才会执行,执行stage.close()是不起作用的。
我有点不知所措。 我发现,当Stage执行close()时,我发现源代码执行了hide(),
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在JavaFX中,当你调用stage.close()
时,它会触发一个关闭事件。这个事件会执行Stage
的onCloseRequest
方法(如果存在的话)。如果你希望在关闭窗口时执行某些操作,你可以在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()
来阻止默认的关闭行为,这样窗口就不会立即关闭了。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢