java - 如何将应用程序添加到系统托盘

标签 java swing icons awt system-tray

我想在窗口关闭时将应用程序添加到系统托盘(类似于 Google Talk 应用程序)。然后,当我单击系统托盘中的打开图标时,应用程序窗口再次变为 Activity 状态。我怎样才能在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);
      }
   }
});

最佳答案

您已正确设置DefaultCloseOperations

myFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

此代码行与 myFrame.setVisible(false) 相同,然后从 JPopupMenu 恢复 JFrame 仅调用 myFrame.setVisible(true)

关于java - 如何将应用程序添加到系统托盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701852/

相关文章:

JPanel 中的 Java 自定义拖放

winforms - ALT-TAB 应用程序图标像素化

android - 启动时未选择 TabLayout 选择的选项卡图标

java - 尝试通知线程已使用 Exchanger 创建对象会导致两个线程都被锁定

java - JUnit 断言失败

java - Spring 安全5 : There is no PasswordEncoder mapped for the id "null"

java - 如何按多个类别对 Arraylist 进行排序

java - 如何使用时间延迟在jtextarea中显示数据库数据?

java - 调用java方法绘制图形

facebook - 如何在 Facebook 上为我的应用程序上传没有黑色颗粒状边框的图标?