浏览 6546 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-21
包名称 package cn.iamsese.swt.study ;
定义一个类来做运行时的入口,这样可以减少main方法的使用,使自己更能进入SWT的学习
/** * 运行控制器类 */ public class Runner { public static void main(String[] args) { SimpleShell simpleShell = new SimpleShell(ExampleClassName.DefaultWindow); //SimpleShell simpleShell = new SimpleShell(ExampleClassName.ChildShell); } } 定义一个类用于分辨不同的demo例子,使得可以传入不同的构造函数到同一的构造函数处,以后没建立一个新实例,就在其中添加一个常数,使用16进制,因为好标识
/** * 实例类的名字 -- 通过在构造函数中调用不同的参数值来运行不同的实例程序 * cn.iamsese.swt.study * Author: vb2005xu [JAVA菜鸟] */ interface ExampleClassName { public final static int DefaultWindow = 0x1 ; //缺省实例 public final static int ChildShell = 0x2 ; //子窗口实例 }
导入的包 -- 以后按需要会添加 import org.eclipse.swt.* ; import org.eclipse.swt.widgets.*;
每添加一个例子,就在其中添加一些代码,后面会陆续跟新一些模板代码,但是大体东西不变
/** * 所有例子的外壳代码 * cn.iamsese.swt.study * Author: vb2005xu [JAVA菜鸟] */ class SimpleShell { private Display display ; private Shell shell ; public SimpleShell(String title){ this.display = new Display(); this.shell = new Shell(this.display); this.shell.setText(title); this.shell.setSize(500,500); SimpleShellUtil.setShellAtCenter(this.shell); } public SimpleShell(int className){ this("第一个SWT例子: cn.iamsese.swt.study.SimpleShell"); this.shell.open(); switch (className) { case ExampleClassName.ChildShell: this.childShellTest(this.shell); break; default: break; } while(! this.shell.isDisposed()){ if ( ! this.display.readAndDispatch() ){ this.display.sleep(); } } this.display.dispose(); } public void childShellTest(Shell shell){ //非模态对话框 ChildShell child1 = new ChildShell(shell); //模式对话框 -- 只禁用父窗体 ChildShell child2 = new ChildShell(shell,SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL); //模式对话框 -- 禁用系统窗体 ChildShell child3 = new ChildShell(shell,SWT.DIALOG_TRIM|SWT.SYSTEM_MODAL); } }
代码例子1 -- ChildShell 每个代码例子,基本都是自包含的 /** * 子 窗口实例 * cn.iamsese.swt.study * Author: vb2005xu [JAVA菜鸟] */ class ChildShell { public ChildShell(Shell parent) { Shell child = new Shell(parent); child.setText("第二个SWT例子: cn.iamsese.swt.study.ChildShell"); child.setSize(400,100); child.open(); } public ChildShell(Shell parent,int style) { Shell child = new Shell(parent,style); child.setText("第二个SWT例子: cn.iamsese.swt.study.ChildShell"); child.setSize(400,100); child.open(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-01-21
2.
将 ChildShellTest方法从SimpleShell中移除,并在ChildShell中添加如下方法: public static void childShellTest(Shell shell){ //非模态对话框 new ChildShell(shell); //模式对话框 -- 只禁用父窗体 new ChildShell(shell,SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL); //模式对话框 -- 禁用系统窗体 new ChildShell(shell,SWT.DIALOG_TRIM|SWT.SYSTEM_MODAL); } SimpleShell类中的SimpleShell(int className)函数中的switch块改为如下代码 switch (className) { case ExampleClassName.ChildShell: ChildShell.childShellTest(this.shell); break; case ExampleClassName.Common_MenuDemo: new MenuDemo(this.shell); break; default: //缺省仅仅打开一个无内容体的窗体 break; } 在 ExampleClassName接口中添加如下代码 public final static int Common_MenuDemo = 0x3 ; //常规菜单实例 修改Runner类中的main方法 SimpleShell simpleShell = new SimpleShell(ExampleClassName.Common_MenuDemo); 另外新建了一个MenuDemo类 /** * 与菜单相关的代码例子 * cn.iamsese.swt.study * Author: vb2005xu [JAVA菜鸟] */ class MenuDemo { private Menu menubar ; private Shell window ; public MenuDemo(Shell window){ this.setWindow(window); this.setMenubar(new Menu(this.window,SWT.BAR)) ; this.initMenuUI(); } /** * 返回一个菜单组对象 * @param text * @param style * @return */ protected MenuItem getMenuItemGroup(String text,int style){ MenuItem menuItemGroup = new MenuItem(this.menubar,style); menuItemGroup.setText(text); return menuItemGroup ; } public void initMenuUI(){ //定义文件菜单组对象 MenuItem fileMenuItemGroup = this.getMenuItemGroup("文件",SWT.CASCADE); } public void setMenubar(Menu menubar) { this.menubar = menubar; } public void setWindow(Shell window) { this.window = window; } } |
|
返回顶楼 | |
发表时间:2009-01-21
3. 修改MenuDemo类:
/** * 与菜单相关的代码例子 * cn.iamsese.swt.study * Author: vb2005xu [JAVA菜鸟] */ class MenuDemo { private Menu menubar ; private Shell window ; public MenuDemo(Shell window){ this.setWindow(window); this.setMenubar(new Menu(this.window,SWT.BAR)) ; this.initMenuUI(); } /** * 返回一个菜单组对象 * @param text * @param style * @return MenuItem */ protected MenuItem getMenuItemGroup(String text,int style){ MenuItem menuItemGroup = new MenuItem(this.menubar,style); menuItemGroup.setText(text); return menuItemGroup ; } public void initMenuUI(){ //定义文件菜单组对象 MenuItem fileMenuItemGroup = this.getMenuItemGroup("文件",SWT.CASCADE); MenuItem editMenuItemGroup = this.getMenuItemGroup("编辑",SWT.CASCADE); MenuItem configMenuItemGroup = this.getMenuItemGroup("设置",SWT.CASCADE); MenuItem helpMenuItemGroup = this.getMenuItemGroup("帮助",SWT.CASCADE); //将菜单条添加到窗体上 this.window.setMenuBar(this.menubar); } public void setMenubar(Menu menubar) { this.menubar = menubar; } public void setWindow(Shell window) { this.window = window; } } |
|
返回顶楼 | |