【问题标题】:How to add application to System Tray如何将应用程序添加到系统托盘
【发布时间】:2012-03-14 12:19:52
【问题描述】:

我想在窗口关闭时将我的应用程序添加到系统托盘(类似于 Google Talk 应用程序)。然后,当我单击系统托盘中的打开图标时,应用程序窗口再次变为活动状态。我怎样才能在 Java 中做到这一点?

final SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("images.jpg");
final TrayIcon trayIcon = new TrayIcon(image);
try {
   SystemTray.getSystemTray().add(trayIcon);
} catch (AWTException e2) {
   e2.printStackTrace();
}

this.addWindowStateListener(new WindowStateListener() {
   public void windowStateChanged(WindowEvent e) {
      if (e.getNewState() == EXIT_ON_CLOSE) {

         trayIcon.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
               setVisible(true);
            }
         });
         setVisible(false);
      }
   }
});

【问题讨论】:

标签: java swing icons awt system-tray


【解决方案1】:

你已经正确设置了DefaultCloseOperations

myFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

此代码行与myFrame.setVisible(false) 相同,然后将JFrameJPopupMenu 恢复为仅调用myFrame.setVisible(true)

【讨论】:

【解决方案2】:

我得到了答案。现在,当我关闭窗口时,它正在关闭,当我点击系统托盘图标时,它会再次打开我的窗口

Image image = Toolkit.getDefaultToolkit().getImage("src/resources/ChatIcon1.jpeg");
    final TrayIcon trayIcon = new TrayIcon(image);
    trayIcon.setToolTip("OfficeCommunicator");
    try {
        SystemTray.getSystemTray().add(trayIcon);
    } catch (AWTException e2) {
        e2.printStackTrace();
    }


                trayIcon.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        trayIcon.displayMessage("hi", "You Opened Me Again", TrayIcon.MessageType.INFO);
                        setVisible(true);
                    }
                });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多