Ecco un esempio completo:

codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;

public class TrayIconTestFrame extends JFrame
{
    private SystemTray sysTray;
    private TrayIcon trayIcon;

    public TrayIconTestFrame (Image iconImg)
    {
        super ("Tray icon test");

        setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        setSize (300, 300);

        sysTray = SystemTray.getSystemTray ();
        trayIcon = new TrayIcon (iconImg, "Prova icona nella tray-bar");

        addWindowListener (new WindowAdapter ()
        {
            public void windowIconified (WindowEvent we)
            {
                setVisible (false);

                try {
                    sysTray.add (trayIcon);
                } catch (Exception e) { }
            }
        });

        trayIcon.addActionListener (new ActionListener ()
        {
            public void actionPerformed (ActionEvent ae)
            {
                setVisible (true);
                setState (NORMAL);
                sysTray.remove (trayIcon);
            }
        });
    }

    public static void main (String[] args)
    {
        try
        {
            final Image iconImg = ImageIO.read (TrayIconTestFrame.class.getResource ("trayicon.gif"));

            SwingUtilities.invokeLater (new Runnable ()
            {
                public void run ()
                {
                    TrayIconTestFrame f = new TrayIconTestFrame (iconImg);
                    f.setVisible (true);
                }
            });
        }
        catch (Exception e)
        {
            System.out.println (e);
        }
    }
}