SWT Designer 是一种功能强大且容易使用的基于Eclipse SWT技术的图形用户界面设计工 具,是一个很好的Eclipse的界面开发插件包。利用SWT Designer 的可视化界面,只需采用 拖拉操作,就可以很快地在窗体上创建各种组件,设计出来的窗体和组件的外观和操作系统 平台下其他软件的外观相似,具有本机系统的风格。SWT Designer 可以自动生成Java代码, 利用它的属性编辑器还可以改变组件的各种属性,使SWT界面开发变得非常容易。
1.SWT Designer 的下载和安装
SWT Designer 有多个版本,要和相应的Eclipse版本相匹配。我使用的是 Designer_v6.7.0_for_Eclipse3.2.zip。安装步骤如下:
1.1 下载
下载版本:Designer_v6.7.0,文件:Designer_v6.7.0_for_Eclipse3.2.zip,下载地址: 大家自己搜下,呵呵。
1.2 安装
Designer_v6.7.0_for_Eclipse3.2.zip解压缩到Eclipse的安装目录中。安装结束后,启 动Eclipse,在主菜单中选择【文件】→【新建】→【项目】,如果在弹出的“新建项目”对 话框中多了一个“Designer”项,则表示SWT Designer 安装成功。如图1所示。
图1
1.3 注册
在Eclipse 主菜单中选择【窗口】→【首选项】,弹出一个对话框,如图2,单击左边树 形目录中的Designer,然后单击对话框右下方的【Registration and Activation】按钮,弹 出对话框,如图4.43 所示,在Serial number栏中输入产品序列号,在ActivationKey 栏中 输入产品激活号,单击【完成】,即可激活。
图2
SWT Designer 有免费版、评估版和正式版,免费版只有有限的功能,评估版需要填写用 户资料和E-mail 地址,从E-mail 中可以获得Activation Key,评估时限为2 周。正式版则 要购买产品,才能获得Activation Key。
2. SWT Designer 开发实例
本节通过创建一个项目,熟悉一下SWT Designer 的主界面及其相应的组件。操作步骤如 下:
2.1创建SWT/JFaceProject
在Eclipse 主菜单中选择【文件】→【新建】→【其他】,弹出“新建”对话框,展开 Designer 节点,选择“SWT/JFace Java Project” (记住:是SWT/JFace Project,不是 JavaProject),再单击【下一步】,出现“创建Java 项目”对话框,输入项目名,如 SWTDesigerTest,单击【完成】。
2.2创建Application Window 窗体
右单击项目名(SWTDesigerTest),选择【新建】→【其他】,在“新建”对话框中,展 开Designer 节点下的SWT 节点,选择“Application Window”,再单击【下一步】,在弹出 的对话框中输入包名和类名,在下方的单选项中选择“public static main() mathod”, 该 选项会自动生成main()方法,使窗体能独立运行。单击【完成】。在程序编辑区的下方,有 【Source】和【Design】两个标签,选择【Source】标签,则在程序编辑区中显示源程序; 选择【Design】标签,则在程序编辑区中出现一个窗体。
2.3在窗体中加入组件
加入2 个标签组件(Label)、2 个文本框组件(Text)和2 个按钮组件(Button),如图4 所示。
图4 SWT Designer 界面
if(text.getText()!=""|text_1.getText ()!="")//调用JFace的信息对话框显示登录信息MessageDialog.openInformation(shell,"登录信息","欢迎 "+text.getText()+"进入系统!");else//调用 JFace的错误对话框显示出错信息MessageDialog.openError(shell,"错误 ","用户名或密码为空,请重新输入!"); 由于用到了 JFace的对话框,在程序的前面要引入相应的包:import org.eclipse.jface.dialogs.*; 输入密码时要在密码框显示“*”,需 要添加SWT.PASSWORD选项:final Text text_1=new Text (shell,SWT.BORDER|SWT.PASSWORD);
2.5运行程序
在Eclipse包资源 管理器中,右单击文件名,在弹出的菜单中选择【运行方式】→【SWT应用程序】,运行 结果如图6所示。输入用户名和密码,点击【提交】,则出现用户登录对话框,如图7所示。 如果用户名或密码为空,则出现错误提示对话框,如图8所示。
图6 用户 登录窗体
图7 用户 登录对话框
图8 错误信息对话框
2.6 程序源程序
源程序
import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import org.eclipse.jface.dialogs.*;public class login { private Text text_1; private Text text; protected Shell shell; /** *//** * Launch the application * @param args */ public static void main(String[] args) { try { login window = new login(); window.open(); } catch (Exception e) { e.printStackTrace(); } } /** *//** * Open the window */ public void open() { final Display display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (! shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } /** *//** * Create contents of the window */ protected void createContents() { shell = new Shell(); shell.setSize(411, 359); shell.setText("SWT Application"); text = new Text(shell, SWT.BORDER); text.setBounds(197, 109, 142, 25); text_1 = new Text (shell, SWT.BORDER|SWT.PASSWORD); text_1.setBounds(197, 173, 142, 25); final Button button = new Button(shell, SWT.ABORT); button.setText("提交"); button.setBounds(85, 263, 48, 22); final Button button_1 = new Button(shell, SWT.ABORT); button_1.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent e) { } }); button_1.setText(" 取消"); button_1.setBounds(247, 263, 48, 22); final Label label = new Label(shell, SWT.NONE); label.setText ("用户名"); label.setBounds(106, 112, 48, 22); final Label label_1 = new Label(shell, SWT.NONE); label_1.setText("密 码"); label_1.setBounds(106, 176, 48, 25); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent e) { if(text.getText()!=""|text_1.getText()! ="")// 调用JFace的对话框显示登录信息 MessageDialog.openInformation(shell,"登录信息","欢 迎"+text.getText()+"进入系统!"); else// 调用JFace的对话框显示出错信息 MessageDialog.openError(shell,"错误","用户名或密码为空,请重新输入 !"); } }); }}
烦恼忧愁不用追,吃点好的别嫌贵,