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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統(tǒng)計

    積分與排名

    friends

    link

    最新評論

    SWT實現(xiàn)任務欄圖標(系統(tǒng)托盤),帶菜單和ToolTip(轉(zhuǎn))

    ?1?import?org.eclipse.swt.SWT;
    ?2?import?org.eclipse.swt.events.ShellListener;
    ?3?import?org.eclipse.swt.graphics.Image;
    ?4?import?org.eclipse.swt.internal.win32.OS;
    ?5?import?org.eclipse.swt.widgets.Display;
    ?6?import?org.eclipse.swt.widgets.Event;
    ?7?import?org.eclipse.swt.widgets.Listener;
    ?8?import?org.eclipse.swt.widgets.Menu;
    ?9?import?org.eclipse.swt.widgets.MenuItem;
    10?import?org.eclipse.swt.widgets.Shell;
    11?import?org.eclipse.swt.widgets.Tray;
    12?import?org.eclipse.swt.widgets.TrayItem;
    13?
    14?public?class?MyTray?{
    15?????public?static?void?main(String[]?args)?{
    16?????????Display?display?=?new?Display();
    17?????????Shell?shell?=?new?Shell(display);
    18?????????//?下面兩句的效果是:在任務欄不顯示
    19?????????//?感謝CSDN會員:GhostValley(鬼谷)
    20?????????final?int?hWnd?=?shell.handle;
    21?????????OS.SetWindowLong(hWnd,?OS.GWL_EXSTYLE,?OS.WS_EX_CAPTIONOKBTN);
    22?????????Image?image?=?new?Image(display,?16,?16);
    23?????????final?Tray?tray?=?display.getSystemTray();
    24?????????if?(tray?==?null)?{
    25?????????????System.out.println("The?system?tray?is?not?available");
    26?????????}?else?{
    27?????????????final?TrayItem?item?=?new?TrayItem(tray,?SWT.NONE);
    28?????????????item.setToolTipText("SWT?TrayItem");
    29?????????????item.addListener(SWT.Show,?new?Listener()?{
    30?????????????????public?void?handleEvent(Event?event)?{
    31?????????????????????System.out.println("show");
    32?????????????????}
    33?????????????});
    34?????????????item.addListener(SWT.Hide,?new?Listener()?{
    35?????????????????public?void?handleEvent(Event?event)?{
    36?????????????????????System.out.println("hide");
    37?????????????????}
    38?????????????});
    39?????????????item.addListener(SWT.Selection,?new?Listener()?{
    40?????????????????public?void?handleEvent(Event?event)?{
    41?????????????????????System.out.println("selection");
    42?????????????????}
    43?????????????});
    44?????????????item.addListener(SWT.DefaultSelection,?new?Listener()?{
    45?????????????????public?void?handleEvent(Event?event)?{
    46?????????????????????System.out.println("default?selection");
    47?????????????????????//?show?main
    48?????????????????????Shell?s?=?event.display.getShells()[0];
    49?????????????????????s.setVisible(true);
    50?????????????????????s.setMinimized(false);
    51?????????????????}
    52?????????????});
    53?????????????final?Menu?menu?=?new?Menu(shell,?SWT.POP_UP);
    54?????????????for?(int?i?=?0;?i?<?8;?i++)?{
    55?????????????????MenuItem?mi?=?new?MenuItem(menu,?SWT.PUSH);
    56?????????????????mi.setText("Item"?+?i);
    57?????????????}
    58?????????????item.addListener(SWT.MenuDetect,?new?Listener()?{
    59?????????????????public?void?handleEvent(Event?event)?{
    60?????????????????????menu.setVisible(true);
    61?????????????????}
    62?????????????});
    63?????????????item.setImage(image);
    64?????????}
    65?????????shell.addShellListener(new?ShellListener()?{
    66?????????????public?void?shellDeactivated(org.eclipse.swt.events.ShellEvent?e)?{
    67?????????????}
    68?
    69?????????????public?void?shellActivated(org.eclipse.swt.events.ShellEvent?e)?{
    70?????????????}
    71?
    72?????????????public?void?shellClosed(org.eclipse.swt.events.ShellEvent?e)?{
    73?????????????}
    74?
    75?????????????public?void?shellDeiconified(org.eclipse.swt.events.ShellEvent?e)?{
    76?????????????}
    77?
    78?????????????public?void?shellIconified(org.eclipse.swt.events.ShellEvent?e)?{
    79?????????????????//?最小化時不顯示在任務欄
    80?????????????????//?感謝CSDN會員:pdvv(我愛花貓)
    81?????????????????((Shell)?e.getSource()).setVisible(false);
    82?????????????}
    83?????????});
    84?????????shell.setBounds(50,?50,?300,?200);
    85?????????shell.open();
    86?????????while?(!shell.isDisposed())?{
    87?????????????if?(!display.readAndDispatch())
    88?????????????????display.sleep();
    89?????????}
    90?????????image.dispose();
    91?????????display.dispose();
    92?????}
    93?}











    這個程序可以在點擊最小化按鈕后, 主窗體最小化到系統(tǒng)托盤,? 再點擊托盤的圖標, 主窗體就恢復顯示. 是 Eclipse Tray 插件的原型. 代碼修改自 Eclipser.org 的官方展示代碼:

    /*******************************************************************************
    ?*?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.
    ?*?All?rights?reserved.?This?program?and?the?accompanying?materials
    ?*?are?made?available?under?the?terms?of?the?Eclipse?Public?License?v1.0
    ?*?which?accompanies?this?distribution,?and?is?available?at
    ?*?
    http://www.eclipse.org/legal/epl-v10.html
    ?*
    ?*?Contributors:
    ?*?IBM?Corporation?-?initial?API?and?implementation
    ?******************************************************************************
    */

    /*
    ?*?Tray?example?snippet:?place?an?icon?with?a?popup?menu?on?the?system?tray
    ?*
    ?*?For?a?list?of?all?SWT?example?snippets?see
    ?*?
    http://www.eclipse.org/swt/snippets/
    ?*?
    ?*?@since?3.0
    ?
    */

    import?org.eclipse.jface.dialogs.MessageDialog;
    import?org.eclipse.swt.*;
    import?org.eclipse.swt.events.ShellEvent;
    import?org.eclipse.swt.events.ShellListener;
    import?org.eclipse.swt.graphics.*;
    import?org.eclipse.swt.widgets.*;

    public?class?Snippet143?{

    ????
    public?static?void?main(String[]?args)?{
    ????????Display?display?
    =?new?Display();
    ????????
    final?Shell?shell?=?new?Shell(display);
    ????????shell.setText(
    "Eclipse?SDK");
    ????????
    ????????shell.setImage(
    new?org.eclipse.swt.graphics.Image(Display.getCurrent(),
    ????????????????
    "icons/sample.gif"));

    ????????Image?image?
    =?shell.getImage();
    ????????
    final?Tray?tray?=?display.getSystemTray();
    ????????
    if?(tray?==?null)?{
    ????????????System.out.println(
    "The?system?tray?is?not?available");
    ????????}
    ?else?{
    ????????????
    final?TrayItem?item?=?new?TrayItem(tray,?SWT.NONE);
    ????????????item.setVisible(
    false);
    ????????????item.setToolTipText(
    "SWT?TrayItem");
    ????????????item.addListener(SWT.Show,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????System.out.println(
    "show");
    ????????????????}

    ????????????}
    );
    ????????????item.addListener(SWT.Hide,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????System.out.println(
    "hide");
    ????????????????}

    ????????????}
    );
    ????????????item.addListener(SWT.Selection,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????System.out.println(
    "selection");
    ????????????????????toggleDisplay(shell,?tray);
    ????????????????}

    ????????????}
    );
    ????????????item.addListener(SWT.DefaultSelection,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????System.out.println(
    "default?selection");

    ????????????????}

    ????????????}
    );
    ????????????
    final?Menu?menu?=?new?Menu(shell,?SWT.POP_UP);
    ????????????MenuItem?mi?
    =?new?MenuItem(menu,?SWT.PUSH);
    ????????????mi.setText(
    "Show?"?+?shell.getText());
    ????????????mi.addListener(SWT.Selection,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????toggleDisplay(shell,?tray);
    ????????????????}

    ????????????}
    );
    ????????????menu.setDefaultItem(mi);
    ????????????
    ????????????
    new?MenuItem(menu,?SWT.SEPARATOR);
    ????????????
    ????????????mi?
    =?new?MenuItem(menu,?SWT.PUSH);
    ????????????mi.setText(
    "&About");
    ????????????
    ????????????mi.addListener(SWT.Selection,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????MessageDialog.openInformation(
    ????????????????????????????shell,
    ????????????????????????????
    "EclipseTray?Plug-in?1.0b?by?BeanSoft",
    ????????????????????????????
    "This?plugin?will?minimize?Eclipse?window?to?tray.\n"?+
    ????????????????????????????
    "Author:?beansoft@126.com\n"?+
    ????????????????????????????
    "Eclipse?version?tested:?3.2?win32\nDate:?2006-12-14");
    ????????????????}

    ????????????}
    );
    ????????????
    ????????????item.addListener(SWT.MenuDetect,?
    new?Listener()?{
    ????????????????
    public?void?handleEvent(Event?event)?{
    ????????????????????menu.setVisible(
    true);
    ????????????????}

    ????????????}
    );
    ????????????item.setImage(image);
    ????????}


    ????????shell.addShellListener(
    new?ShellListener()?{

    ????????????
    public?void?shellActivated(ShellEvent?e)?{
    ????????????????
    //?TODO?Auto-generated?method?stub
    ????????????????
    ????????????}


    ????????????
    public?void?shellClosed(ShellEvent?e)?{
    ????????????????
    //?TODO?Auto-generated?method?stub
    ????????????????
    ????????????}


    ????????????
    public?void?shellDeactivated(ShellEvent?e)?{
    ????????????????
    //?TODO?Auto-generated?method?stub
    ????????????????
    ????????????}


    ????????????
    public?void?shellDeiconified(ShellEvent?e)?{
    ????????????????
    //?TODO?Auto-generated?method?stub
    ????????????????
    ????????????}


    ????????????
    public?void?shellIconified(ShellEvent?e)?{
    ????????????????toggleDisplay(shell,?tray);
    ????????????}

    ????????????
    ????????}
    );
    ????????
    ????????shell.setBounds(
    50,?50,?300,?200);
    ????????shell.open();
    ????????
    while?(!shell.isDisposed())?{
    ????????????
    if?(!display.readAndDispatch())
    ????????????????display.sleep();
    ????????}

    ????????image.dispose();
    ????????display.dispose();
    ????}

    ????
    ????
    /**
    ?????*?Toggle?the?display?of?current?shell?and?tray?icon.
    ?????*?
    ?????*?
    @author?BeanSoft(beansoft@126.com)
    ?????*?
    @param?shell
    ?????*?
    @param?tray
    ?????
    */

    ????
    protected?static?void?toggleDisplay(Shell?shell,?Tray?tray)?{
    ????????
    try?{
    ????????????shell.setVisible(
    !shell.isVisible());
    ????????????tray.getItem(
    0).setVisible(!shell.isVisible());
    ????????????
    //?TODO?Get?focus???!?Like?QQ?
    //????????????shell.setFocus();
    //????????????shell.setActive();
    ????????}
    ?catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????????
    //?TODO:?handle?exception
    ????????}

    ????}

    }

    posted on 2007-01-12 15:33 liaojiyong 閱讀(1813) 評論(0)  編輯  收藏 所屬分類: Eclipse

    主站蜘蛛池模板: 亚洲天堂男人天堂| 亚洲精品自在在线观看| a级毛片免费观看在线| 亚洲国产日韩女人aaaaaa毛片在线| 凹凸精品视频分类国产品免费| 免费人妻无码不卡中文字幕系| 视频一区二区三区免费观看| 亚洲精品在线免费观看视频| 精品亚洲一区二区三区在线播放 | 又粗又硬免费毛片| 国产成人精品免费午夜app| 国产免费黄色无码视频| 中文字幕手机在线免费看电影| 精品亚洲成在人线AV无码| 亚洲精品网站在线观看你懂的| 无码欧精品亚洲日韩一区| 亚洲gv猛男gv无码男同短文| 亚洲成在人线aⅴ免费毛片| 国产成人麻豆亚洲综合无码精品 | 在线观看肉片AV网站免费| 亚洲日韩中文字幕无码一区| ZZIJZZIJ亚洲日本少妇JIZJIZ| 1000部无遮挡拍拍拍免费视频观看| 国产精品亚洲综合网站| 亚洲永久在线观看| 99人中文字幕亚洲区| 亚洲精品无码久久千人斩| 久久免费国产精品| 亚洲成AV人影片在线观看| 亚洲一级在线观看| 亚洲网站在线免费观看| 久久精品无码一区二区三区免费| 亚洲欧洲免费视频| 91人成网站色www免费下载| 亚洲欧美日本韩国| 高潮毛片无遮挡高清免费| 国产亚洲婷婷香蕉久久精品| 久久青青成人亚洲精品| 免费国产成人高清在线观看麻豆 | 国产∨亚洲V天堂无码久久久| 波多野结衣久久高清免费|