您的位置:首页 >> 编程开发 >> Java >> Java基础 >> Eclipse >> 正文
Eclipse RSS
 

Eclipse插件开发系列(4):对话框Dialog

http://www.rdxx.com 06年12月03日 23:36 Blog 我要投稿

关键词: 对话框 , 插件 , Eclipse , Dialog , 开发 , IP

作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net

一、最简单的Dialog。

  在上一章中我们的Hello World是调用了SWT中已写好的一个对话框,如果我们要自己写一个对话框怎么办呢。很简单只需要继承JFace中的Dialog类,然后重写相应的方法就可以了。代码如下:


import org.eclipse.jface.dialogs.Dialog;  //注意这个是jface的Dialog,不是swt的Dialog
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class DialogSample extends Dialog {

    /**
     * 构造函数
     * 注意:其范围由protected改为public,否则包外的类无法调用
     */
    public DialogSample(Shell parentShell) {
        super(parentShell);
    }

    /**
     * 在这个方法里构建Dialog中的界面内容
     */
    protected Control createDialogArea(Composite parent) {
        getShell().setText("标题"); //设置Dialog的标头
        Text text = new Text(parent, SWT.BORDER); //设置一个Text控件
        text.setText("我爱JAVA"); //设置text中的内容
        return parent;
    }

    /**
     * 重载这个方法可以改变窗口的默认式样
     * SWT.RESIZE:窗口可以拖动边框改变大小
     * SWT.MAX: 窗口可以最大化
     */
    protected int getShellStyle() {
        return super.getShellStyle() | SWT.RESIZE | SWT.MAX;
    }

}


 这里出现了几个新的变量类型,在此简单解释如下:

  • Composite :本文中翻译成面板。任何SWT/JFace的界面控件都必须建立在某个面板上面,如上面的new Text(parent, SWT.BORDER),就是将文本框建立在参数传入的面板parent上。面板还能嵌套面板,在建立一个图形界面时常将各个面板层层叠叠的排放在一起。Composite 将是界面设计中使用最平凡的一个类。
  • Control 是Composite 的父类,而Shell 是Composite 的一个子类。用到的场合不是太多,也没太必要了解很清其本质含义。要依着我的开发经验的理解Control (控制):如上面例程中createDialogArea方法就要返回一个Control 表示这些界面元素是由谁主控,或者是谁是主面板包含住了所有控件(我自己猜的)。Shell表示一个界面的外壳,它能得到比Composite 更多的功能。
  • 希望通过如下继承关系图有助于您理解Control、Composite、Shell三者间的关系。

 然后将上一章的SampleAction.java中的run方法改写如下:

    public void run(IAction action) {
     /*
      * 也可以new DialogSample(null); 传一个NULL这时是单开一个窗口
      * 要看两者的区别,注意window操作系统任务条上的变化。
      * 一般来说都应该传一个Shell类型的参数,至少这个Shell来自何处都一样。
      */
        Dialog dialog = new DialogSample(window.getShell());
        dialog.open();
    }

上一页 下一页


 
 
标签: 对话框 , 插件 , Eclipse , Dialog , 开发 , IP 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站