SWT中使用Tray和TrayItem這兩個(gè)類(lèi)來(lái)創(chuàng)建系統(tǒng)托盤(pán)和系統(tǒng)托盤(pán)項(xiàng)。
//為該系統(tǒng)托盤(pán)項(xiàng)注冊(cè)事件
item.addListener( SWT.Show, listner ); //系統(tǒng)托盤(pán)顯示
item.addListener( SWT.Hide , listner );//系統(tǒng)托盤(pán)隱藏
item.addListener( SWT.Selection , listner );//系統(tǒng)托盤(pán)單擊選中
item.addListener( SWT.DefaultSelection , listner );//系統(tǒng)托盤(pán)雙擊選中
item.addListener( SWT.MenuDetect , listner );//系統(tǒng)托盤(pán)右擊事件
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);
// 創(chuàng)建系統(tǒng)托盤(pán)
final Tray tray = display.getSystemTray();
// 如果系統(tǒng)不支持托盤(pán)部件
if (tray == null) {
System.out.println("該系統(tǒng)不支持系統(tǒng)托盤(pán)");
return;
}
final Menu trayMenu = createTrayMenu(display, shell);
// 創(chuàng)建系統(tǒng)托盤(pán)的工作項(xiàng)
final TrayItem item = new TrayItem(tray, SWT.NONE);
item.setToolTipText("這是一個(gè)TrayItem");
//設(shè)置顯示系統(tǒng)托盤(pán)項(xiàng)的圖標(biāo),顯示在桌面的右下角
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 )//當(dāng)顯示系統(tǒng)托盤(pán)時(shí)
System.out.println("顯示");
else if ( event.type==SWT.Hide )//當(dāng)隱藏系統(tǒng)托盤(pán)時(shí)
System.out.println("隱藏");
else if ( event.type==SWT.Selection )//當(dāng)單擊系統(tǒng)托盤(pán)時(shí)
System.out.println("選中");
else if ( event.type==SWT.DefaultSelection )//當(dāng)雙擊系統(tǒng)托盤(pán)時(shí)
System.out.println("默認(rèn)選中");
else if ( event.type==SWT.MenuDetect )//當(dāng)右擊系統(tǒng)托盤(pán)時(shí)
trayMenu.setVisible(true);//設(shè)置菜單為顯示狀態(tài)
}
};
//為該系統(tǒng)托盤(pán)項(xiàng)注冊(cè)事件
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) {
// 定義一個(gè)彈出式菜單,使用常量SWT.POP_UP
final Menu trayMenu = new Menu(shell, SWT.POP_UP);
// 定義菜單中的菜單項(xiàng)
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("關(guān)于我們");
aboutItem.setImage(SWTResourceManager.getImage(TraySample.class,
FilePath.IMAGE_PATH +ImageFactory.SAMPLES));
trayMenu.setDefaultItem(welcomeItem);
return trayMenu;
}
}