SWT程序开发步骤(转)

 4.1.1 SWT程序开发步骤
在eclipse的plugins目录下,找到文件org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar,文件名中中3.2.1是eclipse的版本号,v3235是SWT的序列号,不同的eclipse版本这两个数字也不同。在DOS状态下,用jar命令将该文件解压,命令格式如下:
jar xf org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar
该命令将指定的文件org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar解压到当前目录下。解压后得到四个DLL文件:swt-win32-3235.dll,swt-awt-win32-3235.dll,swt-gdip-win32-3235.dll和swt-wgl-win32-3235.dll。这四个文件就是SWT的原生库文件。原生库文件为SWT通过JNI访问windows本地API提供了接口,为使Java程序在启动时能够访问这些文件,可以通过以下方法进行设置:

方法一:将这四个DLL文件复制到jre的bin目录下。

方法二:设置环境变量,在PATH中加入这几个dll文件所在的目录。

方法三:在eclipse的Java项目中导入原生库文件。操作方法是:

在eclipse的包资源管理器中,右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成。

导入SWT的原生库文件后,还要在eclipse的Java项目中配置构建路径,添加外部JAR,将文件org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar加入到项目中,操作方法是:
在eclipse的包资源管理器中,右单击项目名→构建路径→配置构建路径→库(L)→添加外部JAR→在eclipse的plugins文件夹中找到该jar文件→打开→确定。

例4.1 在Java应用程序中使用SWT的组件。

操作步骤:

① 新建一个Java项目,项目名为:sample4_1。

② 采用方法三在项目中导入原生库文件。

③ 配置构建路径,将org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar加入到项目中。eclipse包资源管理器可以看到导入的原生库文件和引入的jar文件,如图4.2所示。
④ 在项目中新建一个类,文件名为HelloSWT.java。

⑤ 在类文件中写入代码。


     

        图4.2 包资源管理器                                图4.3 程序运行结果

HelloSWT.java文件内容如下:


package edu.ch4;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Text;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.graphics.*;

class HelloSWT {



     

      public static void main(String[] args) {

              Display display=new Display();//创建一个display对象。

              Shell shell=new Shell(display);//shell是程序的主窗体

              shell.setLayout(null);                //设置shell的布局方式

Text hello=new Text(shell,SWT.MULTI);  //声明一个可以显示多行信息的文本框

              shell.setText("Java应用程序");  //设置主窗体的标题

              shell.setSize(200,100);              //设置主窗体的大小

              Color color=new Color(Display.getCurrent(),255,255,255);//声明颜色对象

              shell.setBackground(color);    //设置窗体的背景颜色

              hello.setText("Hello, SWT World!\n\n你好,SWT世界!");//设置文本框信息

              hello.pack();      //自动调整文本框的大小

              //shell.pack();  //自动调整主窗体的大小

              shell.open();      //打开主窗体

              while(!shell.isDisposed()){  //如果主窗体没有关闭则一直循环

                      if(!display.readAndDispatch()){  //如果display不忙

                      display.sleep();      //休眠

                      }

              }

              display.dispose();          //销毁display

      }

}

在包资源管理器中,右单击文件名HelloSWT.java→运行方式→Java应用程序,程序运行结果如图4.3所示。该窗体具有典型的Windows风格。

分析本例的源代码,可以看到,创建一个典型的SWT应用程序需要以下步骤:

①创建一个Display

②创建一个或多个Shell

③设置Shell的布局

④创建Shell中的组件

⑤用open()方法打开Shell窗体

⑥写一个事件转发循环

⑦销毁display









ouyangjl 2007年03月24日 22:38
4.2 SWT/JFace常用组件
      SWT/JFace常用组件有按钮(Button类)、标签(Label类)、文本框(Text类)、下拉框(Combo类)和列表框(List类)等。
      4.2.1 按钮组件
按钮(Button)组件是SWT中最常用的组件,Button类的构造方法是:
Button(Composite parent,int style)
该方法有两个参数:
第一个参数parent是指Button创建在哪一个容器上。Composite(面板)是最常用的容器,Shell(窗体)继承自Composite,此参数也能接受Shell和任何继承自Compsite的类。第二个参数style用来指定Button的式样。SWT组件可以在构造方法中使用式样(style)来声明组件的外观形状和文字的式样。SWT组件的构造方法和Button类相似,参数的含义也相同。
1.Button组件常用式样
SWT.PUSH:按钮。
SWT.CHECK:多选按钮。
SWT.RADIO:单选按钮。
SWT.ARROW:箭头按钮。
SWT.NONE:默认按钮。
SWT.CENTER:文字居中,与SWT.NONE相同。
SWT.LEFT:文字靠左。
SWT.RIGHT:文字靠右。
SWT.BORDER:深陷型按钮。
SWT.FLAT:平面型按钮。
一个Button也可以指定多个式样,只要将指定的各个式样用符号“|”连接起来即可。如:
Button bt=new Button(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);
表示创建的按钮bt是一个复选按钮(CHECK),深陷型(BORDER)、文字左对齐(LEFT)。
2.Button组件的常用方法
setText(String string):设置组件的标签文字。
setBounds(int x,int y,int width,int height):设置组件的坐标位置和大小(x轴坐标,y轴坐标,组件宽度width,组件高度height)。
setEnabled(Boolean enabled):设置组件是否可用。true:可用(默认值),false:不可用。
setFont(Font font):设置文字的字体。
setForeground(Color color):设置前景色。
setBackgrount(Color color):设置背景色。
setImage(Image image):设置显示的图片。
setSelection(Boolean selected):设置是否选中(仅对复选框或单选框有效)。true:选中,false:未选中(默认值)。
setToolTipText(String string):设置鼠标停留在组件上时出现的提示信息。
以上方法在其他组件中也可使用。
例4.2 按钮示例。
按照例4.1的操作步骤建立项目、设置构建路径和引入原生库。类Sample4_2.java源代码如下:
package edu.ch4;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class Sample4_2 {
      public static void main(String[] args) {
              Display display=new Display();//创建一个display对象。
              Shell shell=new Shell(display);//shell是程序的主窗体
              //shell.setLayout(null);              //设置shell的布局方式
              shell.setText("按钮示例");  //设置主窗体的标题
              Button bt1=new Button(shell,SWT.NULL);  //创建默认按钮
              bt1.setText("SWT.NULL");                  //设置按钮上的文字
              bt1.setBounds(10,10,75,30);          //设置按钮显示位置及宽度、高度
              Button bt2=new Button(shell,SWT.PUSH|SWT.BORDER); //创建深陷型按钮
              bt2.setText("SWT.PUSH");
              bt2.setBounds(90,10,75,30);
              Button check1=new Button(shell,SWT.CHECK);//创建复选按钮
              check1.setText("SWT.CHECK");
              check1.setBounds(10,50,75,30);
              Button check2=new Button(shell,SWT.CHECK|SWT.BORDER);//创建深陷型复选按钮
              check2.setText("SWT.CHECK");
              check2.setBounds(90,50,75,30);
              Button radio1=new Button(shell,SWT.RADIO);//创建单选按钮
              radio1.setText("SWT.RADIO");
              radio1.setBounds(10,90,75,30);
              Button radio2=new Button(shell,SWT.RADIO|SWT.BORDER);//创建深陷型单选按钮
              radio2.setText("SWT.RADIO");
              radio2.setBounds(90,90,75,30);
              Button arrowLeft=new Button(shell,SWT.ARROW|SWT.LEFT);//创建箭头按钮(向左)
              arrowLeft.setBounds(10,130,75,20);
              Button arrowRight=new Button(shell,SWT.ARROW|SWT.RIGHT|SWT.BORDER);
              arrowRight.setBounds(90,130,75,20);
              shell.pack();  //自动调整主窗体的大小
              shell.open();      //打开主窗体
              while(!shell.isDisposed()){  //如果主窗体没有关闭
                      if(!display.readAndDispatch()){  //如果display不忙
                      display.sleep();      //休眠
                      }
              }
              display.dispose();          //销毁display
      }
}
运行结果如图4.4所示。
                         
                          图4.4 按钮                                      图4.5 标签
4.2.2 标签组件
标签(Label类)组件是SWT中最简单的组件。Label类的构造方法和Button类相似,参数的含义与相同,格式如下:
Label(Composite parent,int style)
Label类的常用式样有以下几种:
Label类常用的式样如下:
SWT.CENTER:文字居中。
SWT.RIGHT:文字靠右。
SWT.LEFT:文字靠左。
SWT.NONE:默认式样。
SWT.WRAP:自动换行。
SWT.BORDER:深陷型。
SWT.SEPARATOR:分栏符,默认为竖线分栏。
SWT.HORIZONTAL:横线分栏符。
例4.3 标签示例。
package edu.ch4;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Font;
public class Sample4_3 {
      public static void main(String[] args) {
              Display display=new Display();//创建一个display对象。
              Shell shell=new Shell(display);//shell是程序的主窗体
              //shell.setLayout(null);              //设置shell的布局方式
              shell.setText("标签示例");  //设置主窗体的标题
              Label lb1=new Label(shell,SWT.BORDER|SWT.RIGHT);//深陷型、文字右对齐
              lb1.setBounds(10,10,70,30);
              lb1.setText("标签1");
              lb1.setFont(new Font(display,"黑体",14,SWT.BOLD));//设置文字的字体字号
              lb1.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
              Label lb2=new Label(shell,SWT.CENTER);//文字居中的标签
              lb2.setBounds(90,10,70,30);
              lb2.setText("标签2");
              lb2.setFont(new Font(display,"宋体",14,SWT.NORMAL));//设置文字的字体字号
              Label lb3=new Label(shell,SWT.SEPARATOR|SWT.BORDER);//竖直分栏符
              lb3.setBounds(10,50,70,30);
              Label lb4=new Label(shell,SWT.SEPARATOR|SWT.HORIZONTAL|SWT.BORDER);
//水平分栏符
              lb4.setBounds(90,50,70,30);
              shell.pack();  //自动调整主窗体的大小
              shell.open();      //打开主窗体
              while(!shell.isDisposed()){  //如果主窗体没有关闭则一直循环
                      if(!display.readAndDispatch()){  //如果display不忙
                      display.sleep();      //休眠
                      }
              }
              display.dispose();          //销毁display
      }
}
程序运行结果如图4.5所示。
4.2.3 文本框组件
文本框(Text类)的式样如下:
SWT.NONE:默认式样。
SWT.CENTER:文字居中。
SWT.LEFT:文字靠左。
SWT.RIGHT:文字靠右。
SWT.MULTI:可以输入多行,须回车换行。
SWT.WRAP:可以输入多行,到行尾后自动换行。
SWT.PASSWORD:密码型,输入字符显示成“*”。
SWT.BORDER:深陷型。
SWT.V_SCROLL:带垂直滚动条。
SWT.H_SCROLL:带水平滚动条。
例4.4 各种文本框示例。
package edu.ch4;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class Sample4_4 {
      public static void main(String[] args) {
              Display display=new Display();//创建一个display对象。
              Shell shell=new Shell(display);//shell是程序的主窗体
              shell.setText("文本框示例");
              Text text1=new Text(shell,SWT.NONE|SWT.BORDER);//带边框
              text1.setBounds(10,10,70,30);
              Text text2=new Text(shell,SWT.PASSWORD);
              text2.setBounds(90,10,70,30);
              Text text3=new Text(shell,SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL);
              text3.setBounds(10,50,70,70);
              Text text4=new Text(shell,SWT.WRAP|SWT.V_SCROLL);
              text4.setBounds(90,50,70,70);
              shell.pack();
              shell.open();
              while(!shell.isDisposed()){  //如果主窗体没有关闭则一直循环
                      if(!display.readAndDispatch()){  //如果display不忙
                      display.sleep();      //休眠
                      }
              }
              display.dispose();          //销毁display
      }
}
      运行结果如图4.6所示。
                             
                  图4.6 文本框                                              图4.7 下拉框
4.2.4 下拉框组件
1.下拉框(Combo类)的式样
SWT.NONE:默认式样。
SWT.READ_ONLY:只读。
SWT.SIMPLE:无须单击下拉框,列表会一直显示。
2.下拉框(Combo类)的常用方法
add(String string):在Combo中增加一项。
add(String string,int index):在Combo的第index项后插入一项。
deselectAll():使Combo组件中的当前选择项置空。
removeAll():将Combo中的所有选项清空。
setItems(String[] items):将数组中的各项依次加入到Combo中。
select(int index):将Combo的第index+1项设置为当前选择项。
例4.5 下拉框示例。
package edu.ch4;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
public class Sample4_5 {
      private static Label lb;
      public static void main(String[] args) {
              Display display=new Display();//创建一个display对象。
              final Shell shell=new Shell(display);//shell是程序的主窗体
              shell.setText("下拉框示例");
              final Combo combo=new Combo(shell,SWT.NONE);
              combo.setBounds(10,10,100,25);
            lb=new Label(shell,SWT.WRAP);  //创建标签,可自动换行
              lb.setBounds(120,10,100,35);
              Button bt1=new Button(shell,SWT.NONE);
              bt1.setBounds(20,60,100,25);
              bt1.setText("设值");
              bt1.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e){ //按钮的单击事件
                              combo.removeAll();          //清空combo
                              for(int i=1;i<=3;i++){
                                      combo.add("第"+i+"项");  //循环添加选项
                              }
                              combo.select(0);      //设置默认选项
                      }
              });
              Button bt2=new Button(shell,SWT.NONE);
              bt2.setBounds(130,60,100,25);
              bt2.setText("取值");
              bt2.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e){ //按钮的单击事件
                              lb.setText("你选择的是:"+combo.getText());
                      }
              });
              shell.pack();
              shell.open();
              while(!shell.isDisposed()){  //如果主窗体没有关闭则一直循环
                      if(!display.readAndDispatch()){  //如果display不忙
                      display.sleep();      //休眠
                      }
              }
              display.dispose();          //销毁display
      }
}
运行结果如图4.7所示。本例中,按钮bt1和bt2添加了按钮选择监听事件代码。下拉框最初没有值,单击【设置】按钮后将一组数据加入,单击【取值】按钮,标签lb显示取值的结果。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值