package demotest;
import org.eclipse.swt.SWT;
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.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
/**
*
* @author mositure
*
*/
public class TraySample {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个display对象
Display display = new Display();
//shell是程序的主窗体
Shell shell=new Shell(display);
//设置窗体大小
shell.setSize(400, 400);
//设置主窗体的标题
shell.setText("Tray组件");
Tray tray = display.getSystemTray();
if(tray == null){
System.out.println("该系统不支持系统托盘");
return;
}
final Menu trayMenu = createTrtyMenu(display,shell);
TrayItem tratItem = new TrayItem(tray,SWT.NONE);
tratItem.setToolTipText("托盘");
tratItem.setImage(display.getSystemImage(SWT.ICON_WARNING));
//添加事件
Listener listener = new Listener() {
@Override
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);
}
}
};
tratItem.addListener( SWT.Show, listener);
tratItem.addListener(SWT.Hide, listener);
tratItem.addListener(SWT.Selection, listener);
tratItem.addListener(SWT.DefaultSelection, listener);
tratItem.addListener(SWT.MenuDetect, listener);
//打开主窗体
shell.open();
//如果主窗体没有关闭
while(!shell.isDisposed()){
//如果display不忙
if(!display.readAndDispatch()){
//休眠
display.sleep();
}
}
//销毁display
display.dispose();
}
/**
*
* @return
*/
private static Menu createTrtyMenu(Display display,final Shell shell){
//定义弹出式菜单
final Menu tram = new Menu(shell,SWT.POP_UP);
//定义菜单项
org.eclipse.swt.widgets.MenuItem menuItem = new org.eclipse.swt.widgets.MenuItem(tram, SWT.PUSH);
menuItem.setText("菜单1");
return tram;
}
}