2009-04-16 137 views
46

我有一個小小的控制面板,只是我製作的一個小應用程序。我想最小化/把控制面板上/下與systemicons,連同電池壽命,日期,網絡等。如何在系統托盤中放入Java應用程序?

任何人都可以給我一個線索,鏈接到教程或閱讀的東西?

回答

64

從Java 6中,這是在SystemTrayTrayIcon類的支持。 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); 
} 
// ... 

你也可以檢查出this article,或this tech tip

12

這很簡單

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 

設置適當的路徑圖像,然後運行該程序。 T.Y. :)

2

這是代碼,你可以用它來訪問和自定義系統托盤:

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 

} 
相關問題