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

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

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

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

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    SWT實現任務欄圖標(系統托盤),帶菜單和ToolTip(轉)

    ?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?}











    這個程序可以在點擊最小化按鈕后, 主窗體最小化到系統托盤,? 再點擊托盤的圖標, 主窗體就恢復顯示. 是 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

    主站蜘蛛池模板: 中国一级特黄高清免费的大片中国一级黄色片| 亚洲一级视频在线观看| 免费人成视频在线播放| 在线jlzzjlzz免费播放| 亚洲中文无码卡通动漫野外| 最近免费中文字幕大全| 亚洲色大成网站WWW国产| 成人超污免费网站在线看| 99亚偷拍自图区亚洲| 日本一道在线日本一道高清不卡免费| 亚洲AV成人影视在线观看| 噜噜嘿在线视频免费观看| 国产成人高清亚洲一区久久| 亚洲国产精品狼友中文久久久| 国产精品小视频免费无限app | 亚洲精品又粗又大又爽A片| 毛片免费观看的视频在线| 亚洲国产欧美日韩精品一区二区三区| 香蕉高清免费永久在线视频| 高潮毛片无遮挡高清免费| 亚洲一级特黄大片在线观看 | 91精品全国免费观看含羞草| 亚洲不卡在线观看| 成在线人永久免费视频播放| 亚欧乱色国产精品免费视频| 久久久久亚洲AV成人无码网站| 无码精品国产一区二区三区免费 | 男女作爱在线播放免费网站| 久久精品国产亚洲AV无码娇色| 91九色精品国产免费| 亚洲综合激情五月色一区| 亚洲精品国产日韩无码AV永久免费网| 国内精品99亚洲免费高清| 亚洲Av无码乱码在线znlu| 免费看黄的成人APP| 亚洲伦理中文字幕| 亚洲国产精品成人一区| 18pao国产成视频永久免费| 青青青亚洲精品国产| 亚洲电影一区二区| 免费a级毛片无码av|