swt中系统托盘Tray的实现

     在做gui界面的时候,系统托盘是屡见不鲜的功能,也是通用的、基础的功能之一,什么叫做系统托盘呢?就是最小化之后在右下角有个小图标可以还原:

image.png

这样的效果在swt中是怎么实现的呢?这里需要用到swt中的Tray这个类,Tray翻译过来就是“托盘”的意思。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

@Test

    public void testTray(){

        Display display=new Display();

        Shell topShell=new Shell(display);

         

        Tray tray=display.getSystemTray();

        if (tray==null) {

            System.out.println("不支持");

            return;

        }

        //设置系统托盘的工作项,显示在右下角的东西

        TrayItem trayItem=new TrayItem(tray, SWT.NONE);

         

        //可以带“/”,表示从类的根路径,否则从相应的.class文件开始

//      MenuDemo.class.getResourceAsStream("");

        //总是从类的根路径

//      MenuDemo.class.getClassLoader().getResourceAsStream("");

         

//      trayItem.setImage(display.getSystemImage(id))

        //设置工作项的图标,否则不显示

        trayItem.setImage(new Image(display, this.getClass().getResourceAsStream("tray.gif")));

         

        final Menu menu=new Menu(topShell,SWT.POP_UP);

        MenuItem a=new MenuItem(menu, SWT.PUSH);

        a.setText("在线更新");

        MenuItem b=new MenuItem(menu, SWT.PUSH);

        b.setText("关于我们");

        menu.setDefaultItem(a);//颜色更黑

         

         

        Listener listener=new Listener() {

            @Override

            public void handleEvent(Event event) {

                if (event.type==SWT.DefaultSelection) {

                    System.out.println("双击");

                    menu.setVisible(true);

                }else if (event.type==SWT.MenuDetect) {

                    System.out.println("MenuDetect");

                    menu.setVisible(true);

                }else if (event.type==SWT.Show) {

                    System.out.println("显示托盘项");

                }else if (event.type==SWT.Selection) {//单击

                    System.out.println("单击托盘项");

                }else if (event.type==SWT.Hide) {

                    System.out.println("隐藏托盘项");

                }

            }

        };

        //给工作项设置监听

        trayItem.addListener(SWT.DefaultSelection, listener);//双击托盘项

        trayItem.addListener(SWT.MenuDetect, listener);//右击托盘项

        trayItem.addListener(SWT.Show, listener);

        trayItem.addListener(SWT.Selection, listener);

        trayItem.addListener(SWT.Hide, listener);

         

        topShell.pack();

        topShell.open();

        while(!topShell.isDisposed()){

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值