首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java AWT 系統托盤工具箱:快捷啟動應用、定時關機與文件操作

     編輯:Java 程式設計入門

核心功能

  • 一鍵啟動計算器、記事本、任務管理器、畫圖等系統工具
  • 自定義命令:打開指定路徑文件、啟動第三方應用(如 QQ)
  • 定時關機/取消關機(Windows shutdown 命令)
  • 系統托盤常駐,右鍵菜單交互

完整實現代碼

public class SystemTrayToolbox {
    private static final Runtime RT = Runtime.getRuntime();
    private static final Map<String, String> COMMANDS = new LinkedHashMap<>(); // 保持菜單順序

    static {
        COMMANDS.put("計算器", "calc");
        COMMANDS.put("記事本", "notepad");
        COMMANDS.put("任務管理器", "taskmgr");
        COMMANDS.put("畫圖工具", "mspaint");
        COMMANDS.put("打開 QQ", "\"C:\\Program Files (x86)\\Tencent\\QQ\\QQ.exe\"");
        COMMANDS.put("打開工作日誌", "cmd /c start d:\\worklog.txt");
        COMMANDS.put("10分鐘後關機", "shutdown -s -t 600");
        COMMANDS.put("取消關機", "shutdown -a");
    }

    public static void main(String[] args) throws Exception {
        if (!SystemTray.isSupported()) {
            System.err.println("當前平台不支持系統托盤");
            return;
        }

        SystemTray tray = SystemTray.getSystemTray();
        PopupMenu menu = new PopupMenu();

        // 動態構建菜單項
        COMMANDS.forEach((label, cmd) -> {
            MenuItem item = new MenuItem(label);
            item.addActionListener(e -> {
                try {
                    RT.exec(cmd);
                } catch (IOException ex) {
                    ex.printStackTrace();
                    // 可彈出 TrayIcon 提示失敗
                }
            });
            menu.add(item);
        });

        // 退出項
        MenuItem exitItem = new MenuItem("退出程序");
        exitItem.addActionListener(e -> System.exit(0));
        menu.add(exitItem);

        // 托盤圖標 (請替換為實際圖片路徑)
        Image icon = Toolkit.getDefaultToolkit().getImage("tray-icon.png");
        TrayIcon trayIcon = new TrayIcon(icon, "工具箱", menu);
        trayIcon.setImageAutoSize(true);
        tray.add(trayIcon);
    }
}

關鍵技術點

類/接口作用
SystemTray系統托盤單例,isSupported() 需先檢查
TrayIcon托盤圖標承載體,支持圖片、提示文本、右鍵菜單
PopupMenu + MenuItemAWT 原生彈出菜單組件
Runtime.exec()執行系統命令,Windows 需注意路徑空格加引號

常見問題與優化

  • 圖標不顯示:路徑需為絕對路徑或 classpath 下;打包成 JAR 時用 getClass().getResource() 讀取
  • 中文亂碼:Eclipse/IDEA 運行配置中設置 -Dfile.encoding=UTF-8
  • 菜單順序混亂:改用 LinkedHashMap 或維護 List<MenuItem>
  • 多級菜單:嵌套 Menu 實現分類(如「系統工具」、「網絡工具」)
  • 打包分發:maven-shade-plugin 打 Fat JAR,或 jpackage 生成原生安裝包

擴展思路

可進一步集成:剪切板歷史、截圖工具、網速監控、剪切板同步、快捷鍵綁定(需 JNativeHook 等庫)。保持單一職責,每個功能模組化,便於維護與擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved