Hello System Tray

A simple window program with System Tray.


Introduction

A simple windows program to show usage of window program and System Tray.


1. Edit a java source file: "X:\demos\src\hello\systray\DemoSystemTray1.java"

package hello.systray;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JCheckBox;

import com.regexlab.j2e.*;

public class DemoSystemTray1 extends JFrame {

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JCheckBox jCheckBox = null;

    private SystemTray systemTray = null;
   
    private SystemTrayMenu systemTrayMenu = null;
   
    /**
     * This method initializes jCheckBox
     * 
     * @return javax.swing.JCheckBox
     */
    private JCheckBox getJCheckBox() {
        if (jCheckBox == null) {
            jCheckBox = new JCheckBox();
            jCheckBox.setText("Show System Tray");
            jCheckBox.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if(jCheckBox.isSelected()) {
                        getSystemTray().Show();
                    }
                    else {
                        getSystemTray().Hide();
                    }
                }
            });
        }
        return jCheckBox;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
       
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                DemoSystemTray1 thisClass = new DemoSystemTray1();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    /**
     * This is the default constructor
     */
    public DemoSystemTray1() {
        super();
        initialize();
       
        // Safely remove systray icon when System.exit()
        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                getSystemTray().Hide();
            }
        });

        // Callback
        SystemTray.setSystemTrayCallback(new SystemTrayCallback() {
           
            public void OnMouseClick(SystemTray tray, int mouseEvent) {
                if(mouseEvent == SystemTray.RIGHT_CLICK) {
                    getSystemTrayMenu().Popup();
                }
            }
           
            public void OnMenuCommand(int menuid) {
                if(menuid == 1) {
                    getJCheckBox().setSelected(false);
                    getSystemTray().Hide();
                }
                else if(menuid == 2) {
                    System.exit(0);
                }
            }
        });
       
    }

    /**
     * This method initializes this
     *
     * @return void
     */
    private void initialize() {
        this.setSize(300, 200);
        this.setContentPane(getJContentPane());
        this.setTitle("JFrame");
    }

    /**
     * This method initializes jContentPane
     *
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getJCheckBox(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

    /**
     * Create System Tray
     *
     * @return
     */
    private SystemTray getSystemTray() {
        if(systemTray == null) {
            systemTray = new SystemTray(
                    1,                     // 1 - the first 'icon image', etc
                    "Hello System Tray"    // the tips string
            );
        }
        return systemTray;
    }
   
    private SystemTrayMenu getSystemTrayMenu() {
        if(systemTrayMenu == null) {
            systemTrayMenu = new SystemTrayMenu();
            systemTrayMenu.Append("Hide", 1);
            systemTrayMenu.AppendSeparator();
            systemTrayMenu.Append("Exit", 2);
        }
        return systemTrayMenu;
    }
   
}

2. Enter "X:\demos" directory and compile it to a class file:

X:\>cd demos
X:\demos>javac -cp lib/jar2exe_integrate.jar src/hello/systray/DemoSystemTray1.java

3. Make a jar file:

X:\demos>jar -cvf demosystray1.jar -C src .

4. Use Jar2Exe to generate exe file for Windows only:

X:\demos>j2ewiz demosystray1.jar /m hello.systray.DemoSystemTray1 /type windows /systray

The System Tray supports Windows only.

5. Download the program for reference.


See Also

  • See System Tray page for more details about System Tray.