diff --git a/src/main/java/com/fantaibao/DesktopApplication.java b/src/main/java/com/fantaibao/DesktopApplication.java index 33d53f2..5c22e97 100644 --- a/src/main/java/com/fantaibao/DesktopApplication.java +++ b/src/main/java/com/fantaibao/DesktopApplication.java @@ -2,7 +2,9 @@ package com.fantaibao; import com.fantaibao.page.LoginView; import javafx.application.Application; +import javafx.application.Platform; import javafx.stage.Stage; +import javafx.stage.WindowEvent; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; @@ -27,14 +29,31 @@ public class DesktopApplication extends Application { @Override public void start(Stage primaryStage) { + // 添加窗口关闭事件监听器 + primaryStage.setOnCloseRequest(this::handleCloseEvent); // 直接启动登录界面 new LoginView(primaryStage); } @Override public void stop() { - if (applicationContext != null) { + closeApplicationContext(); + } + + /** + * 关闭Spring Boot应用上下文 + */ + public static void closeApplicationContext() { + if (applicationContext != null && applicationContext.isRunning()) { applicationContext.close(); } } + + private void handleCloseEvent(WindowEvent event) { + // 关闭Spring Boot应用上下文 + closeApplicationContext(); + // 退出JVM + Platform.exit(); + System.exit(0); + } } \ No newline at end of file diff --git a/src/main/java/com/fantaibao/page/LoginView.java b/src/main/java/com/fantaibao/page/LoginView.java index f723350..ddecef6 100644 --- a/src/main/java/com/fantaibao/page/LoginView.java +++ b/src/main/java/com/fantaibao/page/LoginView.java @@ -1,5 +1,7 @@ package com.fantaibao.page; +import com.fantaibao.DesktopApplication; +import javafx.application.Platform; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; @@ -9,6 +11,7 @@ import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import javafx.stage.Stage; +import javafx.stage.WindowEvent; public class LoginView {