From cbe61ddcc9ea76118123f0b7486b95daa8c1e5a8 Mon Sep 17 00:00:00 2001 From: wangbing Date: Fri, 25 Jul 2025 09:17:59 +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 --- .../xyz/wbsite/jmacro/JMainApplication.java | 4 +- .../xyz/wbsite/jmacro/JMainController.java | 42 +++++++++++++------ .../java/xyz/wbsite/jmacro/JMainService.java | 23 +++++----- src/main/resources/main.fxml | 10 ++--- 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java index 7031755..1318cd8 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java @@ -49,8 +49,8 @@ public class JMainApplication extends Application { stage.show(); JMainApplication.primaryStage = stage; - JIntellitype.getInstance().registerHotKey(F1_SHORTCUT, 0, KeyEvent.VK_F1); - JIntellitype.getInstance().registerHotKey(F2_SHORTCUT, 0, KeyEvent.VK_F2); + 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: diff --git a/src/main/java/xyz/wbsite/jmacro/JMainController.java b/src/main/java/xyz/wbsite/jmacro/JMainController.java index 6b335db..a2a8af7 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainController.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainController.java @@ -24,6 +24,7 @@ import xyz.wbsite.jmacro.tool.PickLegend; import xyz.wbsite.jmacro.tool.PickPoint; import xyz.wbsite.jmacro.tool.PickRect; import xyz.wbsite.jmacro.util.DialogUtil; +import xyz.wbsite.jmacro.util.Logger; import java.awt.*; import java.net.URL; @@ -54,8 +55,6 @@ public class JMainController implements Initializable { @FXML private TextField times; @FXML - private Button capture; - @FXML private ImageView preview; @FXML private TextArea console; @@ -65,14 +64,13 @@ public class JMainController implements Initializable { private Semaphore semaphore = new Semaphore(1); - public static synchronized JMainController getInstance() { - return instance; + return JMainController.instance; } @Override public void initialize(URL location, ResourceBundle resources) { - this.instance = this; + JMainController.instance = this; // 控件初始化 int intervalValue = JProp.getInstance().getInt("interval", 60); this.interval.setText(String.valueOf(intervalValue)); @@ -169,9 +167,19 @@ public class JMainController implements Initializable { */ @FXML public void onStart() { - boolean start = JMainService.start(); - this.start.setDisable(start); - this.stop.setDisable(!start); + synchronized (JMainController.class) { + this.start.setDisable(true); + this.stop.setDisable(false); + Logger.info("启动服务"); + if (!JMainService.getInstance().run) { + boolean start = JMainService.start(); + if (!start) { + Logger.error("服务启动失败"); + return; + } + Logger.info("服务启动成功"); + } + } } /** @@ -179,10 +187,20 @@ public class JMainController implements Initializable { */ @FXML public void onStop() { - boolean stop = JMainService.stop(); - this.start.setDisable(!stop); - this.stop.setDisable(stop); - this.preview.setImage(null); + synchronized (JMainController.class) { + this.start.setDisable(false); + this.stop.setDisable(true); + Logger.info("停止服务"); + if (JMainService.getInstance().run) { + boolean stop = JMainService.stop(); + if (!stop) { + Logger.error("服务停止失败"); + return; + } + Logger.info("服务停止成功"); + this.preview.setImage(null); + } + } } /** diff --git a/src/main/java/xyz/wbsite/jmacro/JMainService.java b/src/main/java/xyz/wbsite/jmacro/JMainService.java index 6fa1e52..f261d5d 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainService.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainService.java @@ -60,11 +60,10 @@ public class JMainService { } public void createDaemon() { + Logger.info("初始化线程"); this.daemonThread = new DaemonThread(); - Logger.info("初始化守护线程"); this.daemonThread.setDaemon(true); - - // 启动守护线程 + Logger.info("启动线程"); this.run = true; this.daemonThread.start(); } @@ -82,7 +81,7 @@ public class JMainService { // 启动服务 Logger.info("启动服务"); - // 创建守护线程 + // 创建线程 JMainService.getInstance().createDaemon(); return true; } @@ -100,7 +99,7 @@ public class JMainService { } // 关闭守护线程 JMainService.getInstance().daemonThread.interrupt(); - Logger.info("停止服务"); + Logger.info("正在停止脚本"); return true; } @@ -118,14 +117,15 @@ public class JMainService { int intervalValue = JProp.getInstance().getInt("interval", 60); int timesValue = JProp.getInstance().getInt("times", 3); - for (int i = 0; i < timesValue; i++) { - Logger.info("第{}/{}次正在执行", i + 1, timesValue); + int index = 0; + do { + Logger.info("第{}/{}次正在执行", index + 1, timesValue); try { macro.start(); - if (i >= timesValue - 1) { - Logger.info("第{}/{}次执行结束", i + 1, timesValue); + if (index >= timesValue - 1) { + Logger.info("第{}/{}次执行结束", index, timesValue); } else { - Logger.info("第{}/{}次执行结束,休眠{}秒", i + 1, timesValue, intervalValue); + Logger.info("第{}/{}次执行结束,休眠{}秒", index, timesValue, intervalValue); ThreadUtil.sleep(intervalValue * 1000L); } } catch (Exception e) { @@ -135,7 +135,8 @@ public class JMainService { Logger.info("异常中断"); } } - } + index++; + } while (index < timesValue && run); JMainController.getInstance().onStop(); Logger.info("执行结束,守护线程已退出"); diff --git a/src/main/resources/main.fxml b/src/main/resources/main.fxml index 7064499..c58be03 100644 --- a/src/main/resources/main.fxml +++ b/src/main/resources/main.fxml @@ -24,9 +24,9 @@