eclipse SWT 中实现工程图标最小化到托盘,并只能右键托盘图标选择关闭

已经好久没有写博客了,前段时间忙着公司实习,做java C/S下的工程,现将开发过程中遇到的难题整理下来,请持续关注!!谢谢!!

好了,话不多说,首先和大家介绍eclipse SWT 中实现工程图标最小化到托盘,并只能右键托盘图标选择关闭的功能。并且运行工程任务栏有图标,但托盘没有,当关闭桌面上的工程时,图标只在托盘显示。部分代码如下:

</pre><pre name="code" class="html"><span style="font-size:14px;">Display display =new  Display();</span>
<span style="font-size:14px;">protected Tray tray;
protected TrayItem trayItem;
protected Menu trayMenu;
protected MenuItem showMenuItem,exitMenuItem;</span>
<span style="font-size:14px;"><span style="white-space:pre">	</span>//给应用程序指定一个系统图标
<span style="white-space:pre">	</span>shell.setImage(display.getSystemImage(SWT.ICON_WORKING));
        //构造系统栏控件
        tray = display.getSystemTray();
        trayItem = new TrayItem(tray, SWT.NONE);
      //程序启动时,窗口是显示的,所以任务栏栏图标隐藏
        trayItem.setVisible(false);
        trayItem.setToolTipText(shell.getText());
 
        trayItem.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                toggleDisplay(shell, tray);
            }
        });
        trayMenu = new Menu(shell, SWT.POP_UP);
        showMenuItem = new MenuItem(trayMenu, SWT.PUSH);
        showMenuItem.setText("显示窗口(&show)");
 
        //显示窗口,并隐藏任务栏</span><span style="font-size:14px;">图标
        showMenuItem.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                toggleDisplay(shell, tray);
            }
        });
 
        trayMenu.setDefaultItem(showMenuItem);
 
        new MenuItem(trayMenu, SWT.SEPARATOR);
 
        //托盘中的退出菜单,程序只能通过这个菜单退出
        exitMenuItem = new MenuItem(trayMenu, SWT.PUSH);
        exitMenuItem.setText("退出程序(&exit)");
 
        exitMenuItem.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
            	int closeserial=JOptionPane.showConfirmDialog(null, "确定退出?","提示:", JOptionPane.YES_NO_OPTION);
            	if(closeserial==0){
	                shell.dispose();
	                try {
						serialread.close();
					} catch (SerialPortException e) {
						e.printStackTrace();
					}
	            }
            }	
        });
 
       //在托盘图标点击鼠标右键时的事件,弹出菜单
        trayItem.addMenuDetectListener(new MenuDetectListener(){
            public void menuDetected(MenuDetectEvent e) {
                trayMenu.setVisible(true);
            }
        });
 
       trayItem.setImage(shell.getImage());
        shell.addShellListener(new ShellAdapter() {
			 //点击窗口最小化按钮时,窗口隐藏,托盘显示图标
           public void shellIconified(ShellEvent e) {
               toggleDisplay(shell, tray);
           }

           //点击窗口关闭按钮时,并不终止程序,而是隐藏窗口,同时托盘显示图标
           public void shellClosed(ShellEvent e) {
               e.doit = false; //消耗掉原本系统来处理的事件
               toggleDisplay(shell, tray);
           }
          /* public void shellClosed(ShellEvent e) {
               MessageBox messagebox = new MessageBox(shell, SWT.ICON_QUESTION
                       | SWT.YES | SWT.NO);
               messagebox.setText("关闭串口设置:");
               messagebox.setMessage("您确定要退出吗?") ;
               int message = messagebox.open();
               e.doit = message == SWT.YES;
               try {
					serialread.close();
				} catch (SerialPortException e1) {
					e1.printStackTrace();
				}
           }*/
        });</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值