我想在窗口最小化时向系统托盘添加一个图标,并在最大化时将其删除,但我得到了这个异常并且无法解决它。
线程“AWT-EventQueue-0”java.lang.IllegalArgumentException 中的异常:添加已添加的 TrayIcon。
else if (e.getSource() == MinimizeButton)
setState(IslamicProject.ICONIFIED);
{ // Test to see if supports Tray
if (SystemTray.isSupported())
{
//Create Tray
tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("D:/Art Gallary 2008/Islamic/forsan_03.gif");
//create menu Items
PopupMenu popup = new PopupMenu();
MenuItem ExitMenu = new MenuItem("Exit");
MenuItem OpenMenu = new MenuItem("Open");
trayIcon = new TrayIcon(image, "The Tip Text", popup);
//add the listeners of menu items
ListenForExitMenu EXMU = new ListenForExitMenu();
ListenForOpenMenu OPMU = new ListenForOpenMenu();
ExitMenu.addActionListener(EXMU);
OpenMenu.addActionListener(OPMU);
//adds the listener so that when icon in tray is clicked it opens up
//trayIcon.addActionListener(OPMU);
mouselis l = new mouselis();
trayIcon.addMouseListener(l);
// the window state listener tests to see the state of the frame
addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if (e.getNewState() == ICONIFIED)
{
try
{
tray.add(trayIcon);
setVisible(false);
} catch (AWTException ex)
{
System.err.println("Can't add to tray");
}
}
if (e.getNewState() == NORMAL)
{
tray.remove(trayIcon);
setVisible(true);
}
}
});
// adding the open and exit to menu
popup.add(OpenMenu);
popup.add(ExitMenu);
}
else
{
System.err.println("Tray unavailable");
}
}