我正在尝试在关闭窗口时终止运行JavaFX应用程序的线程,而不关闭任何其他线程。这是我的应用程序类:
package testIt;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import java.io.IOException;
public class MemoryVisualizerApp extends Application{
public static void main(String[] args) {
launch(args);
}
//Setup the scene and launch with given properties
@Override
public void start(Stage primaryStage) throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("/MemoryVisualizer.fxml"));
Scene scene = new Scene(root, 650, 340);
//Set whether the screen should be re-sizable (possibly best size = default)
primaryStage.setResizable(true);
primaryStage.setMinHeight(300);
primaryStage.setMinWidth(550);
primaryStage.setTitle("MINT Performance");
primaryStage.setScene(scene);
scene.getStylesheets().add("testIt/MemoryVisualizer.css");
primaryStage.show();
primaryStage.show();
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
{
public void handle(WindowEvent e){
System.out.println("test");
try {
stop();
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
}
}
出于测试目的,这个应用程序是我启动程序时唯一运行的应用程序,所以当我关闭窗口时,整个程序应该终止。但是我仍然可以选择终止程序(我正在使用eclipse并且红色方块仍然是可点击的),这意味着该线程仍处于活动状态。
如何在关闭GUI窗口后终止此线程?
答案 0 :(得分:0)
您可以使用 Platform.exit()
代替 stop()
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
{
public void handle(WindowEvent e){
System.out.println("test");
try {
Platform.exit();
}
catch (Exception e1) {
e1.printStackTrace();
}
}
});
答案 1 :(得分:0)
尝试覆盖stop()方法:
@Override
public void stop(){
System.exit(0);
}
这将导致应用程序停止在IDE中运行。