SWT中使用Tray和TrayItem這兩個類來創建系統托盤和系統托盤項。
//為該系統托盤項注冊事件
item.addListener( SWT.Show, listner ); //系統托盤顯示
item.addListener( SWT.Hide , listner );//系統托盤隱藏
item.addListener( SWT.Selection , listner );//系統托盤單擊選中
item.addListener( SWT.DefaultSelection , listner );//系統托盤雙擊選中
item.addListener( SWT.MenuDetect , listner );//系統托盤右擊事件
package com.strongit.bridge.mainframe;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
import com.strongit.bridge.common.filepath.FilePath;
import com.strongit.bridge.common.swtdesigner.SWTResourceManager;
import com.strongit.bridge.common.util.ImageFactory;
public class TraySample {
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
// 創建系統托盤
final Tray tray = display.getSystemTray();
// 如果系統不支持托盤部件
if (tray == null) {
System.out.println("該系統不支持系統托盤");
return;
}
final Menu trayMenu = createTrayMenu(display, shell);
// 創建系統托盤的工作項
final TrayItem item = new TrayItem(tray, SWT.NONE);
item.setToolTipText("這是一個TrayItem");
//設置顯示系統托盤項的圖標,顯示在桌面的右下角
item.setImage(SWTResourceManager.getImage(TraySample.class,
FilePath.IMAGE_PATH +ImageFactory.SAMPLES));
//集中處理事件
Listener listner = new Listener(){
public void handleEvent(Event event) {
if ( event.type==SWT.Show )//當顯示系統托盤時
System.out.println("顯示");
else if ( event.type==SWT.Hide )//當隱藏系統托盤時
System.out.println("隱藏");
else if ( event.type==SWT.Selection )//當單擊系統托盤時
System.out.println("選中");
else if ( event.type==SWT.DefaultSelection )//當雙擊系統托盤時
System.out.println("默認選中");
else if ( event.type==SWT.MenuDetect )//當右擊系統托盤時
trayMenu.setVisible(true);//設置菜單為顯示狀態
}
};
//為該系統托盤項注冊事件
item.addListener( SWT.Show, listner );
item.addListener( SWT.Hide , listner );
item.addListener( SWT.Selection , listner );
item.addListener( SWT.DefaultSelection , listner );
item.addListener( SWT.MenuDetect , listner );
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
ImageFactory.dispose();
display.dispose();
}
private static Menu createTrayMenu(Display display, final Shell shell) {
// 定義一個彈出式菜單,使用常量SWT.POP_UP
final Menu trayMenu = new Menu(shell, SWT.POP_UP);
// 定義菜單中的菜單項
MenuItem welcomeItem = new MenuItem(trayMenu, SWT.PUSH);
welcomeItem.setText("歡迎");
welcomeItem.setImage(SWTResourceManager.getImage(TraySample.class,
FilePath.IMAGE_PATH +ImageFactory.ECLIPSE));
new MenuItem(trayMenu, SWT.SEPARATOR);
MenuItem updatetem = new MenuItem(trayMenu, SWT.PUSH);
updatetem.setText("在線更新");
updatetem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
System.exit(-1);
ImageFactory.dispose();
}
});
MenuItem aboutItem = new MenuItem(trayMenu, SWT.PUSH);
aboutItem.setText("關于我們");
aboutItem.setImage(SWTResourceManager.getImage(TraySample.class,
FilePath.IMAGE_PATH +ImageFactory.SAMPLES));
trayMenu.setDefaultItem(welcomeItem);
return trayMenu;
}
}