龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java桌面应用程序设计(2)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
SWT对用户操作的响应,比如鼠标或键盘事件,也是采用了AWT和SWING中的Observer模式,在*.event包中可以找到事件监听的Listener接口和相应的事件对象,例如常

  SWT对用户操作的响应,比如鼠标或键盘事件,也是采用了AWT和SWING中的Observer模式,在*.event包中可以找到事件监听的Listener接口和相应的事件对象,例如常用的鼠标事件监听接口MouseListener,MouseMoveListener和MouseTrackListener,及对应的事件对象MouseEvent。

  *.graphics包中可以找到针对图片、光标、字体或绘图的API。比如可通过Image类调用系统中不同类型的图片文件。通过GC类实现对图片、构件或显示器的绘图功能。

  对不同平台,Eclipse还开发了一些富有针对性的API。例如,在Windows平台,可以通过*.ole.win32包很容易的调用ole控件,这使Java程序内嵌IE浏览器或Word、Excel等程序成为可能!

  更复杂的程序

  下面让我们展示一个比上面例子更加复杂一些的程序。这个程序拥有一个文本框和一个按键,当用户点击按键的时候,文本框显示一句欢迎信息。

  为了文本框和按键有比较合理的大小和布局,这里采用了GradLayout布局方式。这种布局是SWT中最常用也是最强大的布局方式,几乎所有的格式都可能通过GradLayout去达到。下面的程序也涉及到了如何应用系统资源(Color),以及如何释放系统资源。

  private void initShell(Shell shell) {
  //为Shell设置布局对象
  GridLayout gShellLay = new GridLayout();
  shell.setLayout(gShellLay);
  //构造一个Composite构件作为文本框和按键的容器
  Composite panel = new Composite(shell,SWT.NONE);
  //为Panel指定一个布局结构对象。
  这里让Panel尽可能的占满Shell,
  也就是全部应用程序窗口的空间。
  GridData gPanelData = new GridData(GridData.GRAB_HORIZONTAL| GridData.GRAB_VERTICAL|GridData.FILL_BOTH);
  panel.setLayoutData(gPanelData);
  //为Panel也设置一个布局对象。文本框和按键将按这个布局对象来显示。
  GridLayout gPanelLay = new GridLayout();
  panel.setLayout(gPanelLay);
  //为Panel生成一个背景色
  final Color bkColor = new Color(Display.getCurrent(),200,0,200);
  panel.setBackground(bkColor);
  //生成文本框
  final Text text = new Text(panel,SWT.MULTI|SWT.WRAP);
  //为文本框指定一个布局结构对象,
  这里让文本框尽可能的占满Panel的空间。
  GridData gTextData = new GridData (GridData.GRAB_HORIZONTAL| GridData.GRAB_VERTICAL|GridData.FILL_BOTH);
  text.setLayoutData(gTextData);
  //生成按键
  Button butt = new Button(panel,SWT.PUSH);
  butt.setText("Push");
  //为按键指定鼠标事件
  butt.addMouseListener(new MouseAdapter(){
  public void mouseDown(MouseEvent e){
   //当用户点击按键的时候,显示信息
   text.setText("Hello SWT");
  }
  });
  //当主窗口关闭时,会触发DisposeListener。这里用来释放Panel的背景色。
  shell.addDisposeListener(new DisposeListener(){
  public void widgetDisposed(DisposeEvent e) {
   bkColor.dispose();
  }
  });
  }


  把这段代码中的方法initShell()加入到第一个打开空窗口的例子中,得到的是一段能成功运行的完整GUI应用程序。运行方法可参考第一个例子。

  系统资源的管理

  在一个图形化的操作系统中开发程序,都要调用系统中的资源,如图片、字体、颜色等。通常这些资源都是有限的,程序员务必非常小心的使用这些资源:当不再使用它们时,就请尽快释放,不然操作系统迟早会油尽灯枯,不得不重新启动,更严重的会导致系统崩溃。

  SWT是用Java开发的,Java语言本身的一大优势就是JVM的"垃圾回收机制",程序员通常不用理会变量的释放,内存的回收等问题。那么对SWT而言,系统资源的操作是不是也是如此?答案是一个坏消息,一个好消息。

精彩图集

赞助商链接