我看到了很多关于这个问题的问题,但他们都没有解决方案。我的问题是:我写了一个带有systray图标的小java应用程序。当windows资源管理器崩溃(可以模拟为停止explorer.exe进程),在它恢复后,我的systray图标消失,但我的应用程序进程继续运行。
有没有办法在explorer.exe重新加载时恢复我的图标?
我的问题是我没有一个可以去的窗口。我的systray本身就是一些命令的启动器。我需要一些东西,听windows任务栏的重建,然后我可以重新添加它。
发布于 2011-12-01 06:54:45
我建议在窗口激活事件中重新注册托盘图标。这样,每当你切换回你的应用程序时,托盘图标就会更新。例如:
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);
}
}
}https://stackoverflow.com/questions/8333820
复制相似问题