Как добавить приложение в системный трей - PullRequest
2 голосов
/ 14 марта 2012

Я хочу добавить свое приложение в системный трей, когда его окно закрыто (аналогично приложению 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);
      }
   }
});

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

вы правильно установили DefaultCloseOperations

myFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

эта строка кода такая же, как myFrame.setVisible(false), затем для восстановления JFrame из JPopupMenu для вызова только myFrame.setVisible(true)

2 голосов
/ 15 марта 2012

Я получил ответ.Теперь, когда я закрываю окно его закрытия и когда я нажимаю на иконку в системном трее, он снова открывает мое окно

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);
                    }
                });
}
...