首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在资源管理器崩溃后恢复Java systray图标

在资源管理器崩溃后恢复Java systray图标
EN

Stack Overflow用户
提问于 2011-12-01 06:22:47
回答 1查看 413关注 0票数 1

我看到了很多关于这个问题的问题,但他们都没有解决方案。我的问题是:我写了一个带有systray图标的小java应用程序。当windows资源管理器崩溃(可以模拟为停止explorer.exe进程),在它恢复后,我的systray图标消失,但我的应用程序进程继续运行。

有没有办法在explorer.exe重新加载时恢复我的图标?

我的问题是我没有一个可以去的窗口。我的systray本身就是一些命令的启动器。我需要一些东西,听windows任务栏的重建,然后我可以重新添加它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-01 06:54:45

我建议在窗口激活事件中重新注册托盘图标。这样,每当你切换回你的应用程序时,托盘图标就会更新。例如:

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyApp extends JFrame
{
   private static TrayIcon trayIcon = null;

   public static void main(String[] args) {
      JFrame app = new MyApp();
      app.setSize(400,400);
      app.setVisible(true);

      final Image image = Toolkit.getDefaultToolkit().getImage("MyImage.gif");

      app.addWindowListener( new WindowAdapter() {
         public void windowActivated(WindowEvent ev) {
            registerTrayIcon(image);
         }
      });
   }

   private static void registerTrayIcon(Image image) {
        SystemTray tray = SystemTray.getSystemTray();

        if( trayIcon != null ) {
           tray.remove(trayIcon);
        }

        trayIcon = new TrayIcon(image, "Tray Demo", null);

        try {
           tray.add(trayIcon);
        }
        catch(Exception ex) {
           throw new RuntimeException(ex);
        }
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8333820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档