From 40e1932f0c607f9a5b8b480906d53b6e41ec2050 Mon Sep 17 00:00:00 2001 From: jianguo Date: Wed, 29 May 2024 14:21:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?1.=20=E5=85=88=E8=A1=8C=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/aohe/Main.java | 3 +- .../java/org/aohe/core/swing/NewWindow.java | 110 ++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/aohe/core/swing/NewWindow.java diff --git a/src/main/java/org/aohe/Main.java b/src/main/java/org/aohe/Main.java index c019468..9383ddc 100644 --- a/src/main/java/org/aohe/Main.java +++ b/src/main/java/org/aohe/Main.java @@ -1,5 +1,6 @@ package org.aohe; +import com.formdev.flatlaf.FlatDarkLaf; import lombok.extern.slf4j.Slf4j; import org.aohe.core.sane.utils.SaneSessionUtils; import org.aohe.core.swing.MainWindow; @@ -18,7 +19,7 @@ public class Main { try { //设置窗口主题 //FlatLightLaf.setup(); - UIManager.setLookAndFeel(new FlatLightLaf()); + UIManager.setLookAndFeel(new FlatDarkLaf()); } catch (UnsupportedLookAndFeelException e) { throw new RuntimeException(e); } diff --git a/src/main/java/org/aohe/core/swing/NewWindow.java b/src/main/java/org/aohe/core/swing/NewWindow.java new file mode 100644 index 0000000..ba09750 --- /dev/null +++ b/src/main/java/org/aohe/core/swing/NewWindow.java @@ -0,0 +1,110 @@ +package org.aohe.core.swing; + +import lombok.extern.slf4j.Slf4j; +import org.aohe.core.web.SocketFactory; + +import javax.swing.*; +import java.awt.*; + +@Slf4j +public class NewWindow extends JFrame { + + private static JTextArea logTextArea; + + public NewWindow() { + // 设置窗口标题 + setTitle("扫描前端"); + + // 设置默认的关闭操作 + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // 设置窗口大小 + setSize(400, 300); + + // 居中显示窗口 + setLocationRelativeTo(null); + + // 初始化UI组件 + initializeComponents(); + } + + private void initializeComponents() { + + JLabel textField = new JLabel(); + textField.setForeground(Color.GRAY); + textField.setText("服务状态:启动中..."); + + //初始化连接服务 + initSocket(); + + // 示例:添加一个按钮,点击时向文本区域添加日志信息 + JButton stopButton = new JButton("退出"); + stopButton.setEnabled(true); + stopButton.addActionListener(e -> { + stopButton.setEnabled(false); + logTextArea.append("关闭服务中...\n"); + //开个新线程关闭,防止主UI线程卡死 + stopSocket(); + textField.setForeground(Color.RED); + textField.setText("服务状态:关闭"); + //关闭任务 + System.exit(0); + }); + + getContentPane().add(textField, BorderLayout.NORTH); + + getContentPane().add(stopButton, BorderLayout.SOUTH); + + } + + public void setView(String view){ + getLogTextArea().append(view + "\n"); + } + + public void initSocket() { + if(SocketFactory.start()){ + setView("socket 服务启动成功"); + }else{ + setView("socket 服务启动失败,请检查8997端口是否被占用"); + } + } + + public void stopSocket() { + try { + if(SocketFactory.stop()){ + setView("服务停止成功"); + }else{ + setView("服务停止失败"); + } + Thread.sleep(1000); + log.info("服务关闭"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + public JTextArea getLogTextArea(){ + if(logTextArea == null){ + initLogTextArea(); + } + return logTextArea; + } + + public void initLogTextArea(){ + // 在这里添加你的组件初始化代码 + // 创建一个JTextArea用于显示日志 + logTextArea = new JTextArea(); + logTextArea.setEditable(false); // 设置为不可编辑 + logTextArea.setEnabled(false); + + // 将JTextArea放入JScrollPane中以支持滚动 + JScrollPane scrollPane = new JScrollPane(logTextArea); + + // 将JScrollPane添加到窗口中 + getContentPane().add(scrollPane, BorderLayout.CENTER); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> new NewWindow().setVisible(true)); + } +} From 0091075137712dfe348fc91b22d340a472ee63f1 Mon Sep 17 00:00:00 2001 From: jianguo Date: Wed, 29 May 2024 14:41:24 +0800 Subject: [PATCH 2/5] 1. youhua --- src/main/java/org/aohe/Main.java | 9 +++--- .../java/org/aohe/core/swing/NewWindow.java | 29 +++++++++++++------ .../org/aohe/core/utils/CommandUtils.java | 5 +++- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/aohe/Main.java b/src/main/java/org/aohe/Main.java index 9383ddc..8dcebe7 100644 --- a/src/main/java/org/aohe/Main.java +++ b/src/main/java/org/aohe/Main.java @@ -1,13 +1,12 @@ package org.aohe; -import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatDarculaLaf; import lombok.extern.slf4j.Slf4j; import org.aohe.core.sane.utils.SaneSessionUtils; -import org.aohe.core.swing.MainWindow; +import org.aohe.core.swing.NewWindow; import org.aohe.core.utils.CommandUtils; import org.aohe.core.utils.SystemUtils; import org.aohe.core.web.SocketFactory; -import com.formdev.flatlaf.FlatLightLaf; import javax.swing.*; @@ -19,13 +18,13 @@ public class Main { try { //设置窗口主题 //FlatLightLaf.setup(); - UIManager.setLookAndFeel(new FlatDarkLaf()); + UIManager.setLookAndFeel(new FlatDarculaLaf()); } catch (UnsupportedLookAndFeelException e) { throw new RuntimeException(e); } //初始化其他资源 init(); - SwingUtilities.invokeLater(() -> new MainWindow().setVisible(true)); + SwingUtilities.invokeLater(() -> new NewWindow().setVisible(true)); } diff --git a/src/main/java/org/aohe/core/swing/NewWindow.java b/src/main/java/org/aohe/core/swing/NewWindow.java index ba09750..0be6d48 100644 --- a/src/main/java/org/aohe/core/swing/NewWindow.java +++ b/src/main/java/org/aohe/core/swing/NewWindow.java @@ -11,6 +11,8 @@ public class NewWindow extends JFrame { private static JTextArea logTextArea; + private static final JLabel textField = new JLabel(); + public NewWindow() { // 设置窗口标题 setTitle("扫描前端"); @@ -30,7 +32,6 @@ public class NewWindow extends JFrame { private void initializeComponents() { - JLabel textField = new JLabel(); textField.setForeground(Color.GRAY); textField.setText("服务状态:启动中..."); @@ -43,12 +44,16 @@ public class NewWindow extends JFrame { stopButton.addActionListener(e -> { stopButton.setEnabled(false); logTextArea.append("关闭服务中...\n"); - //开个新线程关闭,防止主UI线程卡死 - stopSocket(); - textField.setForeground(Color.RED); - textField.setText("服务状态:关闭"); - //关闭任务 - System.exit(0); + //开个新线程关闭,防止主UI线程卡死 + new Thread( () ->{ + stopSocket(); + //关闭任务 + sleep(1000); + textField.setForeground(Color.RED); + textField.setText("服务状态:关闭"); + sleep(100); + System.exit(0); + } ).start(); }); getContentPane().add(textField, BorderLayout.NORTH); @@ -64,6 +69,8 @@ public class NewWindow extends JFrame { public void initSocket() { if(SocketFactory.start()){ setView("socket 服务启动成功"); + textField.setForeground(Color.GREEN); + textField.setText("服务状态:启动"); }else{ setView("socket 服务启动失败,请检查8997端口是否被占用"); } @@ -104,7 +111,11 @@ public class NewWindow extends JFrame { getContentPane().add(scrollPane, BorderLayout.CENTER); } - public static void main(String[] args) { - SwingUtilities.invokeLater(() -> new NewWindow().setVisible(true)); + public static void sleep(long m){ + try { + Thread.sleep(m); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } } diff --git a/src/main/java/org/aohe/core/utils/CommandUtils.java b/src/main/java/org/aohe/core/utils/CommandUtils.java index 955a6e5..616d05e 100644 --- a/src/main/java/org/aohe/core/utils/CommandUtils.java +++ b/src/main/java/org/aohe/core/utils/CommandUtils.java @@ -64,6 +64,7 @@ public class CommandUtils { public static void killUsedPort(String port){ List lsofInfos = findPort(port); for(LsofInfo lsofInfo : lsofInfos){ + log.info(" pro kill begin {}", lsofInfo); destroy(lsofInfo.getPid()); } } @@ -71,12 +72,14 @@ public class CommandUtils { public static List findPort(String port){ String exec = StrUtil.format("lsof -i:{}",port); String s = execForStrUtf8Sudo(exec); + log.info(s); return parseCommandOutput(s); } public static void destroy(String pid){ String exec = StrUtil.format("kill -9 {}",pid); - execForStrUtf8Sudo(exec); + String s = execForStrUtf8Sudo(exec); + log.info(s); } /** From f6a4717dac3e437465aa94daaa0a0cb6ab9b6330 Mon Sep 17 00:00:00 2001 From: jianguo Date: Fri, 31 May 2024 16:08:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?1.=200.3.0=20=E5=A4=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +++- src/main/java/org/aohe/Main.java | 2 ++ src/main/java/org/aohe/core/swing/NewWindow.java | 8 +++++++- src/main/java/org/aohe/core/web/SocketFactory.java | 3 ++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 4a231ae..3cfc0f0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.aohe sane-service - 0.2.6 + 0.3.0 aohe-sane-service @@ -145,6 +145,8 @@ true false linux + 奥诃影像扫描控件 + Sane's socket access programme for use with WEB. true true diff --git a/src/main/java/org/aohe/Main.java b/src/main/java/org/aohe/Main.java index 8dcebe7..e20a0a7 100644 --- a/src/main/java/org/aohe/Main.java +++ b/src/main/java/org/aohe/Main.java @@ -47,4 +47,6 @@ public class Main { log.info("socket 服务已关闭 "); })); } + + } \ No newline at end of file diff --git a/src/main/java/org/aohe/core/swing/NewWindow.java b/src/main/java/org/aohe/core/swing/NewWindow.java index 0be6d48..a5a34f4 100644 --- a/src/main/java/org/aohe/core/swing/NewWindow.java +++ b/src/main/java/org/aohe/core/swing/NewWindow.java @@ -72,7 +72,13 @@ public class NewWindow extends JFrame { textField.setForeground(Color.GREEN); textField.setText("服务状态:启动"); }else{ - setView("socket 服务启动失败,请检查8997端口是否被占用"); + setView("socket 服务启动失败"); + setView("请检查8997端口是否被占用,或是否重复打开此程序"); + setView("应用退出中..."); + new Thread( () -> { + sleep(5000); + System.exit(0); + } ).start(); } } diff --git a/src/main/java/org/aohe/core/web/SocketFactory.java b/src/main/java/org/aohe/core/web/SocketFactory.java index 15a1b74..d56e0a8 100644 --- a/src/main/java/org/aohe/core/web/SocketFactory.java +++ b/src/main/java/org/aohe/core/web/SocketFactory.java @@ -3,6 +3,7 @@ package org.aohe.core.web; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import java.net.BindException; import java.net.UnknownHostException; /** @@ -40,7 +41,7 @@ public class SocketFactory { public static boolean start() { try { getSocket().start(); - } catch (UnknownHostException e) { + } catch (Exception e){ return false; } log.info("socket 已启动"); From e9a63129130394f232e96298dbc027d19f85070d Mon Sep 17 00:00:00 2001 From: jianguo Date: Fri, 31 May 2024 16:08:18 +0800 Subject: [PATCH 4/5] =?UTF-8?q?1.=200.3.0=20=E5=A4=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 ++++- src/main/java/org/aohe/Main.java | 2 ++ .../java/org/aohe/core/swing/NewWindow.java | 8 +++++++- .../java/org/aohe/core/web/SocketFactory.java | 3 ++- src/main/resources/linux/aohe-sane-service.png | Bin 0 -> 56094 bytes 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/linux/aohe-sane-service.png diff --git a/pom.xml b/pom.xml index 4a231ae..e72ec37 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.aohe sane-service - 0.2.6 + 0.3.0 aohe-sane-service @@ -145,7 +145,10 @@ true false linux + 奥诃影像扫描控件 + Sane's socket access programme for use with WEB. + src/main/resources/linux/aohe-sane-service.png true true true diff --git a/src/main/java/org/aohe/Main.java b/src/main/java/org/aohe/Main.java index 8dcebe7..e20a0a7 100644 --- a/src/main/java/org/aohe/Main.java +++ b/src/main/java/org/aohe/Main.java @@ -47,4 +47,6 @@ public class Main { log.info("socket 服务已关闭 "); })); } + + } \ No newline at end of file diff --git a/src/main/java/org/aohe/core/swing/NewWindow.java b/src/main/java/org/aohe/core/swing/NewWindow.java index 0be6d48..a5a34f4 100644 --- a/src/main/java/org/aohe/core/swing/NewWindow.java +++ b/src/main/java/org/aohe/core/swing/NewWindow.java @@ -72,7 +72,13 @@ public class NewWindow extends JFrame { textField.setForeground(Color.GREEN); textField.setText("服务状态:启动"); }else{ - setView("socket 服务启动失败,请检查8997端口是否被占用"); + setView("socket 服务启动失败"); + setView("请检查8997端口是否被占用,或是否重复打开此程序"); + setView("应用退出中..."); + new Thread( () -> { + sleep(5000); + System.exit(0); + } ).start(); } } diff --git a/src/main/java/org/aohe/core/web/SocketFactory.java b/src/main/java/org/aohe/core/web/SocketFactory.java index 15a1b74..d56e0a8 100644 --- a/src/main/java/org/aohe/core/web/SocketFactory.java +++ b/src/main/java/org/aohe/core/web/SocketFactory.java @@ -3,6 +3,7 @@ package org.aohe.core.web; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import java.net.BindException; import java.net.UnknownHostException; /** @@ -40,7 +41,7 @@ public class SocketFactory { public static boolean start() { try { getSocket().start(); - } catch (UnknownHostException e) { + } catch (Exception e){ return false; } log.info("socket 已启动"); diff --git a/src/main/resources/linux/aohe-sane-service.png b/src/main/resources/linux/aohe-sane-service.png new file mode 100644 index 0000000000000000000000000000000000000000..79b2293c96807403a22bd49add7ed58272f9665f GIT binary patch literal 56094 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 LNkvXXu0mjf>)8Y| literal 0 HcmV?d00001 From 8f0175641fd17f00408fa1387396c6380d82ab25 Mon Sep 17 00:00:00 2001 From: jianguo Date: Mon, 3 Jun 2024 13:59:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?1.=200.3.1=20=E8=BF=9E=E6=8E=A5=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linux/aohe-sane-service.png | Bin pom.xml | 5 ++--- src/main/java/org/aohe/core/web/SocketFactory.java | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) rename {src/main/resources => assets}/linux/aohe-sane-service.png (100%) diff --git a/src/main/resources/linux/aohe-sane-service.png b/assets/linux/aohe-sane-service.png similarity index 100% rename from src/main/resources/linux/aohe-sane-service.png rename to assets/linux/aohe-sane-service.png diff --git a/pom.xml b/pom.xml index e72ec37..1946363 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.aohe sane-service - 0.3.0 + 0.3.1 aohe-sane-service @@ -146,9 +146,8 @@ false linux 奥诃影像扫描控件 - Sane's socket access programme for use with WEB. + 奥诃公司为影像 WEB 应用开发的 USB 扫描仪连接驱动,请搭配 WEB 产品使用。 - src/main/resources/linux/aohe-sane-service.png true true true diff --git a/src/main/java/org/aohe/core/web/SocketFactory.java b/src/main/java/org/aohe/core/web/SocketFactory.java index d56e0a8..9dad715 100644 --- a/src/main/java/org/aohe/core/web/SocketFactory.java +++ b/src/main/java/org/aohe/core/web/SocketFactory.java @@ -32,6 +32,7 @@ public class SocketFactory { private static SocketServer getSocket() throws UnknownHostException { log.info("Create Socket ..."); socketServer = new SocketServer(8997); + socketServer.setReuseAddr(true); return socketServer; }