姣忎釜java搴旂敤紼嬪簭閮藉彧鏈変竴涓崟涓鐨凷ystemTray瀹炰緥.鎵浠?涓涓▼搴忎笉鑳藉垱寤哄彧灞炰簬瀹冭嚜宸辯殑SystemTray瀹炰緥;鑰屽畠蹇呴』鐢╣etSystemTray()鏂規(guī)硶鏉ュ彇寰楀凡鏈夌殑閭d釜.
SystemTray鍖呭惈鏈変竴涓垨澶氫釜TrayIcon.閫氳繃SystemTray鐨勬柟娉昦dd(java.awt.TrayIcon)鏂規(guī)硶鍙互娣誨姞涓涓猅rayIcon鍒版墭鐩?閫氳繃remove(java.awt.TrayIcon)灝嗕竴涓猅rayIcon浠庢墭鐩樼Щ闄?娉ㄦ剰鏈榪戞坊鍔犵殑嫻嬭瘯浠g爜鎸囨槑,濡傛搷浣滅郴緇熸垨鑰匤ava runtime涓嶆坊鍔燭rayIcon鍒版墭鐩?add()鏂規(guī)硶鍙兘浼氭姏鍑篈WTException.渚嬪,鍦╔-Windows涓?濡傛灉鎵樼洏涓嶅瓨鍦?瀹冨皢鎶涘嚭AWTException
涓嬮潰鐨勪唬鐮佹紨紺轟簡濡傛灉璁塊棶緋葷粺鎵樼洏:
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 Peformed!",
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 {
// 涓嶆敮鎸佺郴緇熸墭鐩?/span>
}
瀹炵幇Tray Icon
緋葷粺鎵樼洏鍏佽涓涓垨澶氫釜java.awt.TrayIcon娣誨姞鍒板畠鎴栦粠瀹冪Щ闄?涓涓猅rayIcon瀵硅薄浠h〃鐫涓涓彲浠ユ坊鍔犲埌緋葷粺鎵樼洏鐨勬墭鐩樺浘鏍?浣嗘槸,TrayIcon鐨勫姛鑳戒笉姝㈡槸涓涓樉紺哄湪鎵樼洏閲岀殑鍥炬爣.瀹冭繕鍙互鏈夊伐鍏鋒彁紺?tooltip),鏈変竴涓狝WT鐨勫脊鍑鴻彍鍗?榪樻湁涓緋誨垪鐩稿叧鐨勪睛鍚櫒
涓涓猅rayIcon浼氫駭鐢熷悇縐嶅悇鏍風殑MouseEvent(pressed,released,鍜宑licked).鍙互瀵瑰畠娣誨姞鐩稿叧鐨勪睛鍚櫒鍘繪帴鏀惰繖浜涗簨浠剁殑閫氱煡.浣嗘槸瑕佹敞鎰?鍦∕ouseEvent浠嶵rayIcon鎺ユ敹鍒扮殑鍧愭爣鏄浉瀵逛簬灞忓箷鑰屼笉鏄疶rayIcon瀹冭嚜宸辯殑.TrayIcon瀹冭嚜宸卞鐞嗚繖浜涗簨浠?渚嬪,榛樿鎯呭喌涓?褰撳彸鍑籘rayIcon鏃?鍜屽畠鐩稿叧鐨勫脊鍑鴻彍鍗曞氨浼氭樉紺?褰撻紶鏍囧湪瀹冧笂闈㈠仠鐣欐椂,宸ュ叿鎻愮ず灝變細鍑虹幇.TrayIcon涔熷彲浠ヤ駭鐢烝ctionEvent.鍦ㄤ竴浜涘鉤鍙頒笂,ActionEvent浜х敓浜庣敤鎴烽氳繃榧犳爣鎴栭敭鐩橀夋嫨璇rayIcon鏃?涓涓疄鐜拌壇濂界殑TrayIcon搴旇鐢ㄤ笉鍚岀殑鏂規(guī)硶鍘繪樉紺哄脊鍑鴻彍鍗曞拰閫夋嫨鎵樼洏鍥炬爣.
娉ㄦ剰,鏍規(guī)嵁鏈鏂扮殑javadocs,褰撲竴涓紶鏍囦簨浠惰鍙戦佸埌瀹冪殑渚﹀惉鍣ㄦ椂,瀹冪殑component灞炴?閫氳繃鐖剁被ComponentEvent.getComponent()鑾峰彇)灝嗕細琚緗負null.鑰宻ource灞炴?閫氳繃EventObject.getSource()鑾峰彇)灝嗚璁劇疆涓鴻TrayIcon
鏈夌敤鐨勭壒鐐?br />
鐢╯etImage()鏂規(guī)硶鍙互鍦ㄤ互鍚庢洿鏂癟rayIcon鐨勫浘鏍?
trayIcon.setImage(updatedImage);
鍚屾牱浣犲彲浠ユ洿鏂板伐鍏鋒彁紺?
trayIcon.setTooltip("I'm busy. Go away.");
TrayIcon鏈変竴涓潪甯告湁鐢ㄧ殑鑷姩璋冩暣澶у皬鐨勫睘鎬?榪欎釜灞炴у喅瀹氭槸鍚﹁嚜鍔ㄨ皟鏁村浘鐗囩殑澶у皬浠ラ傚簲鎵樼洏鐨勫ぇ灝?榛樿榪欎釜灞炴ф槸false鐨?濡傛灉鍥劇墖鐨勫ぇ灝忎笉閫傚悎鎵樼洏鐨勫ぇ灝?鍥劇墖浠嶄細浠ュ畠鍘熸潵鐨勫ぇ灝忕粯鍒跺埌鎵樼洏涓?涔熷氨鏄,濡傛灉鍥劇墖姣斿垎閰嶇殑鎵樼洏絀洪棿澶?鍥劇墖灝嗚鍓垏.鍙︿竴鏂歸潰,濡傛灉鑷姩璋冩暣澶у皬琚涓簍rue,閭d箞鍥劇墖灝嗕幾緙╀互閫傚簲鎵樼洏鍥炬爣鐨勫ぇ灝?br />
trayIcon.setImageAutoSize(true);
鏈鍚?濡傛灉浣犳兂鍋跺皵鐢ㄥ伐鍏鋒彁紺洪氱煡鐢ㄦ埛紼嬪簭鐨勪竴浜涘彉鍖?浣犲彲浠ョ敤displayMessage()鏂規(guī)硶.榪欎釜鏂規(guī)硶寮瑰嚭涓涓湪鎵樼洏鍥炬爣涓婂脊鍑轟竴涓秷鎭?榪欎釜娑堟伅浼氬湪涓孌墊椂闂翠箣鍚?鎴栬呯敤鎴峰崟鍑誨畠涔嬪悗娑堝け.鍗曞嚮瀹冪殑鏃跺?鏍規(guī)嵁緋葷粺鐨勬儏鍐?浼氫駭鐢烝ctionEvent
trayIcon.displayMessage("Finished downloading",
"Your Java application has finished downloading",
TrayIcon.MessageType.INFO);
絎竴涓弬鏁版槸鏍囬.瀹冮氬父鍦ㄥ脊鍑烘秷鎭噷浼氫互綺椾綋鏄劇ず.絎簩涓弬鏁版槸瑕佹樉紺虹殑娑堟伅.鏈鍚?鏈鍚庝竴涓弬鏁版槸TrayIcon鐨勪竴涓灇涓劇被鍨婽rayIcon.Message,鏈夊洓涓夋嫨.榪欎簺閫夐」鍙互鐢ㄤ綔鍐沖畾鍦ㄦ樉紺烘秷鎭椂,鏄惁搴旀墽琛屾煇浜涘浘褰㈡搷浣滄垨鍏朵粬緋葷粺鍔ㄤ綔.鍥涗釜閫夋嫨濡備笅:
TrayIcon.MessageType.ERROR An error message
TrayIcon.MessageType.INFO An information message
TrayIcon.MessageType.NONE A simple message
TrayIcon.MessageType.WARNING A warning message
===================================================
涓嬮潰鏄垜鑷繁鍐欑殑渚嬪瓙
package blog.swing;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.PopupMenu;
import java.awt.MenuItem;
import java.awt.Image;
import java.awt.AWTException;
import java.awt.Toolkit;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class SystemTrayDemo
{
SystemTray systemTray;
TrayIcon trayIcon;
Image trayImage;
String trayTip;
PopupMenu trayPopupMenu;
MenuItem trayMenuItem;
ActionListener trayActionListener;
ActionListener menuActionListener;
MouseListener trayMouseListener;
Thread displayTime;
public SystemTrayDemo() {
if( SystemTray.isSupported() ){
trayMouseListener = 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!");
}
};
trayActionListener = new ActionListener(){
public void actionPerformed( ActionEvent e ){
System.out.println( "Tray Icon - Action event happened!" );;
}
};
menuActionListener = new ActionListener(){
public void actionPerformed( ActionEvent e ){
System.exit(0);
}
};
trayPopupMenu = new PopupMenu();
trayMenuItem = new MenuItem("exit");
trayMenuItem.addActionListener( menuActionListener );
trayPopupMenu.add( trayMenuItem );
trayTip = "This is a SystemTray Demo";
trayImage = Toolkit.getDefaultToolkit().getImage("images/leaf.gif");
trayIcon = new TrayIcon( trayImage,trayTip,trayPopupMenu );
trayIcon.addActionListener( trayActionListener );
trayIcon.addMouseListener( trayMouseListener );
trayIcon.setImageAutoSize( true );
systemTray = SystemTray.getSystemTray();
try{
systemTray.add( trayIcon );
}catch( AWTException e ){
e.printStackTrace();
}
}else{
System.out.println( "SystemTray unsupported!" );
}
displayTime = new Thread(new Runnable(){
public void run(){
Calendar now;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time;
while(true){
now = Calendar.getInstance();
time= sdf.format( now.getTime() );
trayIcon.displayMessage("鎶ユ椂",time,TrayIcon.MessageType.INFO);
try{
Thread.sleep(60000);
}catch( InterruptedException e ){
e.printStackTrace();
}
}
}
});
displayTime.start();
}
public static void main(String[] args)
{
new SystemTrayDemo();
}
}

]]>