簡體   English   中英

為什么我的系統托盤圖標的彈出菜單沒有響應輸入?

[英]Why isn't the popup menu for my System Tray Icon responding to inputs?

我已經在后台 java 程序上工作了一段時間,它幾乎可以發布了,所以我想我應該添加一種退出程序的方法。 我有這個 function:

private static void setupSysTray() {
    if (!SystemTray.isSupported()) {
        System.out.println("SystemTray is not supported");
            return;
    }

    try {
        final PopupMenu popupMenu = new PopupMenu();
        final TrayIcon trayIcon = new TrayIcon(ImageIO.read(new File(workingDirectory +
 fileSeparator + "tray.png")), "Multi");
        final SystemTray tray = SystemTray.getSystemTray();

        MenuItem exitItem = new MenuItem("Exit");
        exitItem.addActionListener(e -> {
            System.out.println("Something happened!");
            System.exit(0);
        });
        popupMenu.add(exitItem);
        trayIcon.setPopupMenu(popupMenu);

        tray.add(trayIcon);
    } catch (IOException | AWTException e) {
        e.printStackTrace();
    }
}

我認為這會處理它,我從各種堆棧溢出帖子和官方文檔中拼湊了它。 結果是托盤圖標出現,帶有正確的圖像和工具提示。 當我右鍵單擊它時,我看到“退出”菜單項出現。 但這就是它失敗的地方,菜單項沒有任何 hover 着色(讓我相信輸入完全被破壞了)並且點擊該項目沒有結果。 我是否犯了一些愚蠢的錯誤,比如錯誤地訂購了物品? 這里發生了什么?

事實證明,我在我幾乎忘記的代碼的舊部分中使用了全局鼠標掛鈎。 鈎子來自這個存儲庫,修復是將鈎子的原始輸入設置從 true 更改為 false。

// True instead of false seems to block JavaFX events
private static GlobalMouseHook mouseHook = new GlobalMouseHook(false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM