diff --git a/pom.xml b/pom.xml
index b1eee1f..5b39a5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,6 +120,14 @@
true
true
+
+
+
+ -Dprism.order=sw
+ -Dglass.win.uiScale=1
+ -Xms256m
+ -Xmx512m
+
diff --git a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java
index cdf55a5..fab53c2 100644
--- a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java
+++ b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java
@@ -2,11 +2,13 @@ package xyz.wbsite.jmacro;
import com.melloware.jintellitype.JIntellitype;
import javafx.application.Application;
+import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import xyz.wbsite.jmacro.ui.FXMLUtil;
+import xyz.wbsite.jmacro.util.DialogUtil;
import xyz.wbsite.jmacro.util.ResourceUtil;
import xyz.wbsite.jtask.TaskImpl;
@@ -49,18 +51,36 @@ public class JMainApplication extends Application {
stage.show();
JMainApplication.primaryStage = stage;
- JIntellitype.getInstance().registerHotKey(F1_SHORTCUT, JIntellitype.MOD_CONTROL, KeyEvent.VK_F1);
- JIntellitype.getInstance().registerHotKey(F2_SHORTCUT, JIntellitype.MOD_CONTROL, KeyEvent.VK_F2);
- JIntellitype.getInstance().addHotKeyListener(identifier -> {
- switch (identifier) {
- case F1_SHORTCUT:
- mainController.onStart();
- break;
- case F2_SHORTCUT:
- mainController.onStop();
- break;
+ // 创建独立线程处理JIntellitype初始化
+ Thread hotkeyRegistrationThread = new Thread(() -> {
+ try {
+ JIntellitype.getInstance().registerHotKey(F1_SHORTCUT, JIntellitype.MOD_CONTROL, KeyEvent.VK_F1);
+ JIntellitype.getInstance().registerHotKey(F2_SHORTCUT, JIntellitype.MOD_CONTROL, KeyEvent.VK_F2);
+
+ JIntellitype.getInstance().addHotKeyListener(identifier -> {
+ Platform.runLater(() -> {
+ switch (identifier) {
+ case F1_SHORTCUT:
+ mainController.onStart();
+ break;
+ case F2_SHORTCUT:
+ mainController.onStop();
+ break;
+ }
+ });
+ });
+
+ } catch (UnsatisfiedLinkError e) {
+ Platform.runLater(() -> DialogUtil.error("缺少必要的系统组件(VC++运行时)"));
+ } catch (NoClassDefFoundError e) {
+ Platform.runLater(() -> DialogUtil.error("热键功能依赖库未找到"));
+ } catch (Exception ignored) {
+
}
- });
+ }, "Hotkey-Registration-Thread");
+ // 启动线程(设为守护线程,避免阻止JVM退出)
+ hotkeyRegistrationThread.setDaemon(true);
+ hotkeyRegistrationThread.start();
// 服务初始化
JMainService.init(new TaskImpl(), new File("legend"));
diff --git a/target/classes/icon.png b/target/classes/icon.png
index 9ec4f1d..96e8ab9 100644
Binary files a/target/classes/icon.png and b/target/classes/icon.png differ