Swt常用控件中文教程

2008-02-23 07:55:41来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  1、Eclipse中swt的配置

  建议配置:jdk1.4.2以及eclipse3.1

  在代码中调用swt控件之前,首先建立一个项目,然后选择该项目的properties -> Java Build Path,将standard Widget ToolKit加入到Library页当中。如下图所示:

  接下来可以建立第一个eclipse小程序,新建一个class,并且在该class所对应的代码中输入如下程序,其中package以及class名称根据实际情况来确定名称。

package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
/*导入需要的类库*/
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
/*shell为一个窗口对象*/
Label label = new Label(shell, SWT.NONE);
label.setText("Hello, World!"); /*创建一个标签对象并且设置标题文字*/
label.pack();
shell.pack();
shell.open(); /*打开并显示窗口*/

while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep(); /*在窗口没有销毁之前,显示对象一直处于等待状态*/

display.dispose(); /*否则,销毁对象,释放对象所占据的资源*/
label.dispose();
}
}

  运行上述代码(run -> debug -> swt application)将产生如下所示的一个窗口

  2、button的使用

  按钮可能的类型有很多,例如:

SWT.BORDER 含有边框的按钮

SWT.CHECK 复选按钮

SWT.PUSH 普通按钮

SWT.RADIO 单选按钮

  3、Text的使用

  文本框的类型也有很多种选择,例如:

SWT.BORDER 含有边框

SWT.READ_ONLY 只读

  下图为包含按钮以及文本框的窗口

  设计上述窗口所对应的代码为:

package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display( );
Shell shell = new Shell(display);
shell.setSize(300, 200);
shell.setLayout(new RowLayout( ));
shell.setText("Button Example");
final Button button = new Button(shell, SWT.BORDER);
button.setText("Click Me");
final Text text = new Text(shell, SWT.BORDER);
shell.open( );

while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
}
}

  如果想对控件的位置以及大小进行精确的设置,可以使用setBounds(x, y, width, height)方法来取代shell.setLayout(new RowLayout( ))。例如:button.setBounds(80, 80, 90, 20);

  button的监听及事件处理

  对按钮单击事件处理的代码:

button.addSelectionListener(new SelectionListener( )
{
public void widgetSelected(SelectionEvent event)
{
text.setText("No worries!");
}
public void widgetDefaultSelected(SelectionEvent event)

{
text.setText("No worries!");
}
});

  将以上代码加入到shell.open之前,当点击按钮时产生以下效果:


  分析:由于为button按钮增加了一个监听器,按钮时刻处于被“监控”的状态,当按钮控件被选择(点击)既选择事件发生时,对文本控件进行赋值”No worries”。

  根据监听事件的原理,设计如下程序,该程序能够获得鼠标的X坐标,显示在文本框中:

package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;

public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display( );
Shell shell = new Shell(display);
shell.setSize(300, 200);
shell.setLayout(new RowLayout( ));
final Text text = new Text(shell, SWT.SHADOW_IN);

shell.addMouseMoveListener(new MouseMoveListener( )
{
public void mouseMove(MouseEvent e)
{
Integer y=new Integer(e.x); /*将x坐标转换为Integer类型的对象*/
text.setText(y.toString());
}
});

shell.open( );
while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
}
}

  监听方式:

ControlListener 用于处理移动以及尺寸变化

FocusListener 用于处理得到焦点以及失去焦点

KeyListener 处理按键的输入

MouseListener , MouseMoveListener, MouseTrackListener 对鼠标的动作进行处理

SelectionListener 处理控件的选择行为(包括按钮的点击)

  注意:监听方式与其所能够处理的事件具有一定的关联性,既监听方式决定了所能够处理事件的种类,例如:

shell.addMouseListener(new MouseListener( )
{
public void mouseMove(MouseEvent e)
{text.setText("mousemove");}
public void mouseDoubleClick(MouseEvent e)
{text.setText("mousedbclc");}
public void mouseDown(MouseEvent e)
{}
public void mouseUp(MouseEvent e)
{}
});

  你会发现在鼠标移动时,text.setText("mousemove");始终不能够执行;并且mouseDown、mouseUp事件不能够省略,原因就在于MouseListener只能处理mouseDoubleClick、mouseDown、mouseUp三类事件,而且这三类事件不能够分离。

  3、List控件

  List控件的样式包括:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:将HTML转化为TEXT的Java类

下一篇:JSP学习笔记(一)-----概述