SWT系统托盘

1.创建系统托盘时要通过Display对象的getSystemTray方法的操作系统不同,对系统创建托盘的支持也不同,若系统不支持托盘,则返回null
2.Tray和TrayItem是一对多的关系,同Menu和MenuItem的关系一样。
3.TrayItem通常与一个弹出式菜单连用,配合TrayItem的事件,将菜单显示出来。
4.SWT.Show和SWT.Hide,当系统托盘增多时,会隐藏一些图标。
5.SWT.MenuDetect,在图标上右击的事件,通常是弹出式菜单

package com.layotech.www.tray;

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.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;

import com.layotech.www.facory.ImageFactory;

public class TraySample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Tray tray = display.getSystemTray();
if(tray == null){
System.out.println("该系统不支持托盘!");
return;
}
final Menu trayMenu = createTrayMenu(display,shell);
//创建系统托盘的工作项
TrayItem item = new TrayItem(tray, SWT.NONE);
item.setImage(ImageFactory.loadImage(display, ImageFactory.PREVIEW_IMAGE));
item.setToolTipText("这是一个TrayItem");
//集中处理事件
Listener listener = new Listener() {
@Override
public void handleEvent(Event event) {
//当显示系统托盘适
if(event.type == SWT.Show){
System.out.println("显示");
}
if(event.type == SWT.Hide){
System.out.println("隐藏");
}
if(event.type == SWT.Selection){
System.out.println("选中");
}
if(event.type == SWT.DefaultSelection){
System.out.println("默认选中");
}
//右击系统托盘时
if(event.type == SWT.MenuDetect){
trayMenu.setVisible(true);
}
}
};
item.addListener(SWT.Show, listener);
item.addListener(SWT.Hide, listener);
item.addListener(SWT.Selection, listener);
item.addListener(SWT.DefaultSelection, listener);
item.addListener(SWT.MenuDetect, listener);
shell.pack();
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
}
public static Menu createTrayMenu(Display display,Shell shell){
//定义一个弹出式菜单
final Menu trayMenu = new Menu(shell,SWT.POP_UP);
//定义菜单中的选项
MenuItem welcomeItem = new MenuItem(trayMenu, SWT.PUSH);
welcomeItem.setText("欢迎");
new MenuItem(trayMenu, SWT.SEPARATOR);
MenuItem updateItem = new MenuItem(trayMenu, SWT.PUSH);
updateItem.setText("在线更新");
MenuItem aboutItem = new MenuItem(trayMenu, SWT.PUSH);
aboutItem.setText("在线更新");
return trayMenu;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值