如何将Java应用程序放入系统托盘中?
我有一个小小的控制面板,只是我做的一个小应用程序。 我想最小化/放置控制面板与systemicons,连同电池的寿命,date,networking等
任何人都可以给我一个线索,链接到一个教程或东西阅读?
从Java 6开始,这在SystemTray
和TrayIcon
类中得到支持。 SystemTray
在Javadoc中有一个相当广泛的例子:
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); } // ...
你也可以看看这篇文章 ,或者这个技巧 。
这很简单
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("srchttp://img.dovov.com1.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
为图像设置适当的path ,然后运行该程序。 ty 🙂
这是您可以用来访问和定制系统托盘的代码:
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 }