twain-service/src/main/java/org/aohe/show/TrayFrame.java

107 lines
3.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package org.aohe.show;
import cn.hutool.core.io.resource.ResourceUtil;
import org.aohe.constant.SocketEnum;
import org.aohe.web.SocketUtils;
import javax.swing.*;
import java.awt.*;
public class TrayFrame {
public void create() throws Exception {
//创建Socket连接默认是执行了start操作
SocketUtils.start(SocketEnum.SCAN_SOCKET);
// 确保事件调度线程EDT创建和显示GUI
SwingUtilities.invokeLater(() -> {
// 检查系统是否支持系统托盘
if (!SystemTray.isSupported()) {
System.out.println("系统托盘不被支持");
return;
}
// 获取系统托盘实例
SystemTray tray = SystemTray.getSystemTray();
// 创建一个图像,作为托盘图标
Image image = Toolkit.getDefaultToolkit().getImage(ResourceUtil.getResource("ah.png").getFile());
// 创建一个弹出菜单
PopupMenu popup = new PopupMenu();
// 创建菜单项
MenuItem aboutItem = new MenuItem("About");
//CheckboxMenuItem cb1 = new CheckboxMenuItem("Enable Message"); // 使用CheckboxMenuItem替换JCheckBoxMenuItem
MenuItem exitItem = new MenuItem("Exit");
MenuItem startServiceItem = new MenuItem("Start Service");
MenuItem stopServiceItem = new MenuItem("Stop Service");
// 初始化按钮状态
startServiceItem.setEnabled(false);
stopServiceItem.setEnabled(true);
// 将菜单项添加到弹出菜单
popup.add(aboutItem);
//popup.add(cb1);
popup.addSeparator();
popup.add(startServiceItem);
popup.add(stopServiceItem);
popup.addSeparator();
popup.add(exitItem);
// 创建托盘图标
TrayIcon trayIcon = new TrayIcon(image, "Scan Tray Program", popup);
// 设置托盘图标大小
trayIcon.setImageAutoSize(true);
// 添加托盘图标到系统托盘
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("无法添加托盘图标");
return;
}
// 添加事件监听器
aboutItem.addActionListener(e -> JOptionPane.showMessageDialog(null, "AoHe 的扫描托盘程序"));
// cb1.addItemListener(e -> {
// if (cb1.getState()) {
// System.out.println("通知已启用");
// } else {
// System.out.println("通知已禁用");
// }
// });
startServiceItem.addActionListener(e -> {
try {
SocketUtils.start(SocketEnum.SCAN_SOCKET);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
startServiceItem.setEnabled(false);
stopServiceItem.setEnabled(true);
System.out.println("服务已启动");
});
stopServiceItem.addActionListener(e -> {
SocketUtils.safeStop(SocketEnum.SCAN_SOCKET);
startServiceItem.setEnabled(true);
stopServiceItem.setEnabled(false);
System.out.println("服务已停止");
});
exitItem.addActionListener(e -> {
tray.remove(trayIcon);
SocketUtils.safeStop(SocketEnum.SCAN_SOCKET);
System.exit(0);
});
});
}
}