SWT How to:添加系統托盤

  添加系統托盤的核心code:

         final ImageData trayIcon = new ImageData(SWTSystemTray.class.
                getResource("/resources/16x16/tray.png").getPath());
        
final Image trayImage = new Image(display, trayIcon);
        
        
/*
         * 获得系统托盘并为托盘添加一定的响应时间,如下所示:
         * 1.如果窗口存在,则在点击托盘图标的时候窗口会自动隐藏
         * 2.如果窗口不存在(即隐藏),则点击托盘图标时窗口会自动显示
         * 3.右键菜单Show: 显示窗口
         * 4.右键菜单Exit: 退出程序
         
*/
        
final Tray tray = display.getSystemTray();
        
if(null == tray){
            logger.warn("OS doesn't support system tray");
        } else {
            
final TrayItem item = new TrayItem(tray, SWT.NONE);
            item.setToolTipText("System tray");
            
            
final Menu trayMenu = new Menu(shlSystemTray, SWT.POP_UP);
            
            
final MenuItem showUI = new MenuItem(trayMenu, SWT.PUSH);
            showUI.setText("Show");
            showUI.setImage(SWTResourceManager.getImage(SWTSystemTray.class
                    
"/resources/16x16/show.png"));
            showUI.addListener(SWT.Selection, new Listener() {
                
                @Override
                
public void handleEvent(Event event) {
                    shlSystemTray.setVisible(true);
                    shlSystemTray.setActive();
                }
            });
            
            
final MenuItem exit = new MenuItem(trayMenu, SWT.PUSH);
            exit.setText("Exit");
            exit.setImage(SWTResourceManager.getImage(SWTSystemTray.class
            
"/resources/16x16/exit.png"));
            exit.addListener(SWT.Selection, new Listener() {
                
                @Override
                
public void handleEvent(Event event) {
                    trayImage.dispose();
                    shlSystemTray.dispose();
                }
            });
            
            item.addSelectionListener(new SelectionListener() {
                
                @Override
                
public void widgetSelected(SelectionEvent e) {
                    shlSystemTray.setVisible(!shlSystemTray.getVisible());
                    
if(shlSystemTray.getVisible()){
                        shlSystemTray.setActive();
                    }
                }
                
                @Override
                
public void widgetDefaultSelected(SelectionEvent e) {
                    widgetSelected(e);
                }
            });
            
//为系统托盘添加右键菜单
            item.addListener(SWT.MenuDetect, new Listener() {
                
                @Override
                
public void handleEvent(Event event) {
                    trayMenu.setVisible(true);
                }
            });
            item.setImage(trayImage);
            item.setVisible(true);
        }


   如果需要具體的代碼請點擊here

posted @ 2010-08-04 12:13  MagicLetters  阅读(301)  评论(0编辑  收藏  举报