Jak w temacie.
Próbuję w NetBeansie zaimplementowac w prostej aplikacji ikonkę w system trayu.
Chciałbym, żeby po dwukrotnym kliknięciu lewym przyciskiem myszy przywracała program, a sama ikonka żeby znikała.
Tu mam mój kod:
package systraytest;
import java.awt.*;
import static java.awt.Frame.ICONIFIED;
import static java.awt.Frame.NORMAL;
import java.awt.event.*;
import javax.swing.JFrame;
public class SysTrayTest extends JFrame
{
TrayIcon trayIcon;
SystemTray tray;
SysTrayTest(){
if(SystemTray.isSupported())
{
tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("\\Resources\\bulb.gif");
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Open");
ActionListener openListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(true);
setExtendedState(JFrame.NORMAL);
}
};
defaultItem.addActionListener(openListener) ;
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "HMI Testing Tool", popup);
trayIcon.setImageAutoSize(true);
}
addWindowStateListener(new WindowStateListener()
{
public void windowStateChanged(WindowEvent e)
{
if(e.getNewState() == ICONIFIED)
{
try
{
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
}
catch (AWTException ex)
{
System.out.println("unable to add to tray");
}
}
if(e.getNewState() == NORMAL)
{
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
}
});
setVisible(true);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new SysTrayTest();
}
}
Jak widac zamiast automatycznego przywracania programu pojawia się menu z opcja Open, a nie na tym mi zależy.
Jestem kompletnie nowy w Javie i błądzę po omacku. Będę wdzięczny za pomoc i uwagi.