2012-03-14 2 views
2

Я хочу добавить свое приложение в системный лоток, когда оно закрыто (аналогично приложению Google Talk). И затем, когда я нажимаю значок «on» на панели задач, окно приложения снова активируется. Как я могу сделать это на 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); 
     } 
    } 
}); 
+0

возможно дубликат [Как поставить приложение Java в системном трее?] (HTTP: // StackOverflow .com/questions/758083/how-do-i-put-a-java-app-in-the-system-tray) – MByD

ответ

3

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

myFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE) 

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

+0

спасибо за это. но я не использую Popup для восстановления. я хочу, когда я нажимаю значок в системном трее, он должен открыть окно входа в систему. – Vinay

+1

затем добавьте [MouseListener к значку в SystemTray] (http://stackoverflow.com/a/8460383/714968) – mKorbel

+0

Да, я получил это благодаря. – Vinay

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); 
        } 
       }); 
} 
+0

может быть правильным +1 – mKorbel

 Смежные вопросы

  • Нет связанных вопросов^_^