How to host a Java application in the system tray?

I have a small control panel, just a small application that I made. I would like to minimize / put the control panel up / down using system components along with battery life, date, networks, etc.

Anyone who can give me a hint, a link to a tutorial, or something to read?

+50
java minimize system-tray
Apr 16 '09 at 21:13
source share
3 answers

As with Java 6, this is supported by SystemTray and TrayIcon . SystemTray has a fairly extensive example in its Javadocs:

 TrayIcon trayIcon = null; if (SystemTray.isSupported()) { // get the SystemTray instance SystemTray tray = SystemTray.getSystemTray(); // load an image Image image = Toolkit.getDefaultToolkit().getImage("your_image/path_here.gif"); // create a action listener to listen for default action executed on the tray icon ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { // execute default action of the application // ... } }; // create a popup menu PopupMenu popup = new PopupMenu(); // create menu item for the default action MenuItem defaultItem = new MenuItem(...); defaultItem.addActionListener(listener); popup.add(defaultItem); /// ... add other items // construct a TrayIcon trayIcon = new TrayIcon(image, "Tray Demo", popup); // set the TrayIcon properties trayIcon.addActionListener(listener); // ... // add the tray image try { tray.add(trayIcon); } catch (AWTException e) { System.err.println(e); } // ... } else { // disable tray option in your application or // perform other actions ... } // ... // some time later // the application state has changed - update the image if (trayIcon != null) { trayIcon.setImage(updatedImage); } // ... 

You can also check out this article or this technical tip .

+68
Apr 16 '09 at 21:15
source share

It is very simple

 import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; public class SystemTrayDemo{ //start of main method public static void main(String []args){ //checking for support if(!SystemTray.isSupported()){ System.out.println("System tray is not supported !!! "); return ; } //get the systemTray of the system SystemTray systemTray = SystemTray.getSystemTray(); //get default toolkit //Toolkit toolkit = Toolkit.getDefaultToolkit(); //get image //Toolkit.getDefaultToolkit().getImage("src/resources/busylogo.jpg"); Image image = Toolkit.getDefaultToolkit().getImage("src/images/1.gif"); //popupmenu PopupMenu trayPopupMenu = new PopupMenu(); //1t menuitem for popupmenu MenuItem action = new MenuItem("Action"); action.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Action Clicked"); } }); trayPopupMenu.add(action); //2nd menuitem of popupmenu MenuItem close = new MenuItem("Close"); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); trayPopupMenu.add(close); //setting tray icon TrayIcon trayIcon = new TrayIcon(image, "SystemTray Demo", trayPopupMenu); //adjust to default size as per system recommendation trayIcon.setImageAutoSize(true); try{ systemTray.add(trayIcon); }catch(AWTException awtException){ awtException.printStackTrace(); } System.out.println("end of main"); }//end of main }//end of class 

Set the appropriate path for the image, and then run the program. ty :)

+15
Sep 09 '14 at 13:05
source share

This is the code you can use to access and customize the taskbar:

 final TrayIcon trayIcon; if (SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit().getImage("tray.gif"); MouseListener mouseListener = new MouseListener() { public void mouseClicked(MouseEvent e) { System.out.println("Tray Icon - Mouse clicked!"); } public void mouseEntered(MouseEvent e) { System.out.println("Tray Icon - Mouse entered!"); } public void mouseExited(MouseEvent e) { System.out.println("Tray Icon - Mouse exited!"); } public void mousePressed(MouseEvent e) { System.out.println("Tray Icon - Mouse pressed!"); } public void mouseReleased(MouseEvent e) { System.out.println("Tray Icon - Mouse released!"); } }; ActionListener exitListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Exiting..."); System.exit(0); } }; PopupMenu popup = new PopupMenu(); MenuItem defaultItem = new MenuItem("Exit"); defaultItem.addActionListener(exitListener); popup.add(defaultItem); trayIcon = new TrayIcon(image, "Tray Demo", popup); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { trayIcon.displayMessage("Action Event", "An Action Event Has Been Performed!", TrayIcon.MessageType.INFO); } }; trayIcon.setImageAutoSize(true); trayIcon.addActionListener(actionListener); trayIcon.addMouseListener(mouseListener); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println("TrayIcon could not be added."); } } else { // System Tray is not supported } 
+2
Apr 14 '16 at 12:07 on
source share



All Articles