Jak zrobic ikonkę system tray, żeby przywracała program po dwukrotnym kliknięciu

0

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.

0

Dodaj ActionListenera bezpośrednio do trayIcon, np:

trayIcon = new TrayIcon(image, "HMI Testing Tool");
trayIcon.addActionListener(openListener);

1 użytkowników online, w tym zalogowanych: 0, gości: 1