From 3576f50ac0fcc445451996c897c1ec76a724fb4a Mon Sep 17 00:00:00 2001 From: wangbing Date: Fri, 10 Oct 2025 17:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++ .../xyz/wbsite/jmacro/JMainApplication.java | 42 +++++++++++++----- target/classes/icon.png | Bin 2183 -> 12180 bytes 3 files changed, 39 insertions(+), 11 deletions(-) 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 9ec4f1d617373ac0e842568d97c3d61ff8f4b5a1..96e8ab9ee4353dbb0fa99dee47ff5467b66c73ae 100644 GIT binary patch literal 12180 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 WIS78Av@FN~0000efh literal 2183 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