Duffblog

前进一步,看看,需要前进更大一步才可以。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 53 文章 :: 5 评论 :: 0 Trackbacks
一些桌面应用程序会在系统的工具条上显示一个图标,即使程序最小化了,也可以供用户方便地操作程序。以前使用Swing来制做这个功能的时候费了不小的力 气,使用了JNI来完成这个功能(JNI:Java Native Interface Java本地编程接口,可以通过调用汇编或C或C++程序来完成某些功能)。自从Eclipse推出之后,swt就占据了java开发桌面应用的大部分份 额,其中最大的优点就是swt为我们提供了与操作系统交互的接口(其实,swt内容的实现机制就是通过JNI来实现的)。下面是今天完成的系统托盘的例 子。

  // 取得系统托盘对象
 2final Tray tray = shell.getDisplay().getSystemTray();
 3
 4if (tray != null{
 5        // 生成托盘对象
 6        final TrayItem item = new TrayItem(tray, SWT.NONE);
 7        // 为托盘对象添加鼠标停留时的文字
 8        item.setToolTipText(“六月天”);
 9        // 为托盘添加事件
10        item.addListener(SWT.Show, new Listener() {
11                public void handleEvent(Event event) {
12                        System.out.println("show");
13                }

14        }
);
15        item.addListener(SWT.Hide, new Listener() {
16                public void handleEvent(Event event) {
17                        System.out.println("hide");
18                }

19        }
);
20        item.addListener(SWT.Selection, new Listener() {
21                public void handleEvent(Event event) {
22                        System.out.println("selection");
23                }

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

29        }
);
30        // 为托盘对象添加显示用的图标
31        item.setImage(image);
32        // 生成菜单项
33        final Menu menu = new Menu(shell, SWT.POP_UP);
34        MenuItem miShow = new MenuItem(menu, SWT.PUSH);
35        miShow.setText("S&how");
36        
37        miShow.addSelectionListener(new SelectionListener() {
38                public void widgetSelected(SelectionEvent arg0) {
39                        shell.setVisible(true);
40                        shell.setMaximized(true);
41                }

42        
43                public void widgetDefaultSelected(SelectionEvent arg0) {
44                }

45        }
);
46        
47        MenuItem miExit = new MenuItem(menu, SWT.PUSH);
48        miExit.setText("E&xit");
49        
50        miExit.addSelectionListener(new SelectionListener() {
51                public void widgetSelected(SelectionEvent arg0) {
52                        exitAction.run();
53                }

54                
55                public void widgetDefaultSelected(SelectionEvent arg0) {
56                }

57        }
);
58        
59        // 为托盘对象添加事件,当右键点击图标时,显示菜单
60        item.addListener(SWT.MenuDetect, new Listener() {
61                public void handleEvent(Event event) {
62                        menu.setVisible(true);
63                }

64        }
);
65}

总结:swt/jface为java程序员提供了快速反映的界面,由于swt/jface本身也是利用JNI来调用系统的界面,所以在实现界面的同时也为程序员提供了一些与操作系统交互的方法。利用这些方法,可以很方便快捷地完成我们的功能。

Eclipse的Forms也非常不错,提供了华丽的界面,写出来的程序就如同网页一样,当然要有一定的审美眼光,有兴趣的朋友不仿研究研究。

转自:http://www.blogjava.net/hiswing/archive/2006/08/09/62593.html
posted on 2006-08-13 17:48 追球者 阅读(225) 评论(0)  编辑  收藏 所属分类: 技术文摘

只有注册用户登录后才能发表评论。


网站导航: