<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kooyee ‘s blog

    開源軟件, 眾人努力的結晶, 全人類的共同財富
    posts - 103, comments - 55, trackbacks - 0, articles - 66
       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    swt的system tray,只能處理三種事件:左鍵單擊,左鍵雙擊和右鍵雙擊,右鍵單擊
    這是我看swt 3.0.1 win32的源碼所知
    此demo有以下功能:
    1.左鍵單擊時 ,隱藏,顯示主窗口
    2.右鍵單擊,彈出菜單

    注意:
    1.左鍵雙擊和右鍵雙擊是一種事件,無法區(qū)分
    2.左鍵雙擊將產生以下事件:左鍵單擊,左鍵雙擊,左鍵單擊
    3.關于彈出菜單,menu必須有一個parent,如果程序里沒有任何shell,可以建一個不可見的shell專門作為menu的parent.

    import org.eclipse.swt.*;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.swt.events.*;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.graphics.Image;

    class HelloTray implements SelectionListener{

    Display display;
    Shell shell;
    Button hello;
    Tray tray;
    TrayItem ti;
    Menu menu;
    MenuItem mi1;
    MenuItem mi2;
    MenuItem quit;

    public HelloTray(){
    display 
    = Display.getDefault();
    shell 
    = new Shell();

    FillLayout fillLayout 
    = new FillLayout();
    fillLayout.type 
    = SWT.VERTICAL;
    shell.setLayout(fillLayout);

    hello 
    = new Button(shell, SWT.NONE);
    hello.setText(
    "Hello World!");
       hello.addSelectionListener(
    new SelectionAdapter(){
    public void widgetSelected(SelectionEvent e){
           
    if(hello.getText().equals("Hello World!"))
             hello.setText(
    "Clicked");
           
    else
             hello.setText(
    "Hello World!");
    }
    });

    menu
    =new Menu(shell);
    mi1
    =new MenuItem(menu,SWT.PUSH);
    mi1.setText(
    "MenuItem 1");
    mi1.addSelectionListener(
    this);
    mi2
    =new MenuItem(menu,SWT.PUSH);
    mi2.setText(
    "MenuItem 2");
    mi2.addSelectionListener(
    this);
    quit
    =new MenuItem(menu,SWT.PUSH);
    quit.setText(
    "Quit");
    quit.addSelectionListener(
    this);

    //生成swt的tray
    tray=display.getSystemTray();
    ti
    =new TrayItem(tray,0);
    ti.setToolTipText(
    "This is a swt Tray!");
    ti.setImage(
    new Image(display,"E:\My Documents\My Pictures\alm.gif"));

    //swt,tray的所有事件:
    ti.addSelectionListener(new SelectionListener(){
    //左鍵單擊
    public void widgetSelected(SelectionEvent e){
    System.out.println(
    "Tray Selcted");
    //左鍵單擊時 ,隱藏,顯示主窗口
    if(shell.isVisible()){
    shell.setVisible(
    false);
    }
    else{
    shell.setVisible(
    true);
    shell.forceActive();
    }
    }
    //左鍵雙擊,右鍵雙擊,都是它
    public void widgetDefaultSelected(SelectionEvent e){
    System.out.println(
    "Tray widgetDefaultSelected");
    }
    });
    //右鍵單擊,彈出菜單
    ti.addListener(SWT.MenuDetect,new Listener(){
    public void handleEvent(Event event){
    System.out.println(
    "SWT.MenuDetect");
    menu.setLocation(display.getCursorLocation());
           menu.setVisible(
    true);
    }
    });
    }

    public void start(){
    shell.open();
    while (!shell.isDisposed()) {
    if (!display.readAndDispatch())
    display.sleep();
    }
    display.dispose();
    }

    public static void main(String[] args) {
    HelloTray app
    =new HelloTray();
    app.start(); 
    }

    public void widgetSelected(SelectionEvent e){
    System.out.println(e.getSource()
    +" selected.");
    if(e.getSource()==quit){
    System.out.println(
    "Quit");
    display.dispose();
    System.exit(
    0);
    }
    }

    public void widgetDefaultSelected(SelectionEvent e){ 
    }
    }
    主站蜘蛛池模板: 午夜免费福利网站| 久久久精品视频免费观看| 国产在线一区二区综合免费视频| 亚洲AV无码不卡在线观看下载 | 亚洲国产成人精品女人久久久 | 中文字幕亚洲综合久久男男| 三级片免费观看久久| gogo全球高清大胆亚洲| 一个人看的在线免费视频| 亚洲国产天堂久久综合| 一级做a爱过程免费视频高清| 亚洲精品无码你懂的网站| 亚洲成年人免费网站| 免费电影在线观看网站| 亚洲最大免费视频网| 一级毛片在线播放免费| 亚洲福利一区二区三区| 久久这里只有精品国产免费10| 精品亚洲成a人在线观看| 精品亚洲A∨无码一区二区三区| 国内精品乱码卡1卡2卡3免费| 国产成人亚洲综合无| 911精品国产亚洲日本美国韩国 | 最近免费中文字幕大全视频| 乱淫片免费影院观看| 国产一级高青免费| 日韩精品一区二区亚洲AV观看| 最近免费mv在线电影| 亚洲色大成网站www久久九| 免费国产真实迷j在线观看| 丁香花在线视频观看免费| 亚洲国产综合在线| 国产精品免费_区二区三区观看| 一级**爱片免费视频| 亚洲视频一区在线| 国产免费观看网站| 免费无码成人AV在线播放不卡 | 亚洲男同gay片| 久久久久亚洲?V成人无码| 最近中文字幕免费2019| 狠狠综合亚洲综合亚洲色|