为一个widget添加Listener,调用 addListener() .其函数原形:
void addListener(int eventType, Listener listener)
eventType为SWT类定义的事件常量 . 每个常量代表程序中的一个事件,比如:SWT.FocusIn,SWT.MouseDoubleClick,SWT.KeyDown等. 常用的事件类型参照表A。第二个参数Listener 对象可以是一个已经定义好有名字的Listener对象,也可以是匿名类,可以是内部类(inner class)也可以是外部类(outer class),不过大多使用匿名的内部类, 例如为一个按钮添加点击事件的监听器,代码如下:
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
switch (e.type) {
case SWT.Selection:
System.out.println("Button pressed");
break;
}
}
});
|
Type |
Description |
|---|---|
|
SWT.Activate |
Triggered when the widget becomes the active window |
|
SWT.Arm |
Triggered when the widget is armed |
|
SWT.Close |
Triggered when the widget is closed |
|
SWT.Collapse |
Triggered when a tree node is collapsed |
|
SWT.Deactivate |
Triggered when the widget is no longer the active window |
|
SWT.DefaultSelection |
Triggered when the default selection occurs |
|
SWT.Deiconify |
Triggered when the widget is restored from being minimized |
|
SWT.Dispose |
Triggered when the widget is disposed |
|
SWT.DragDetect |
Triggered when the widget is dragged |
|
SWT.Expand |
Triggered when a tree node is expanded |
|
SWT.FocusIn |
Triggered when the widget gains focus |
|
SWT.FocusOut |
Triggered when the widget loses focus |
|
SWT.HardKeyDown |
Triggered when a special hardware key, such as on a Pocket PC device, is pressed |
|
SWT.HardKeyUp |
Triggered when a special hardware key, such as on a Pocket PC device, is released |
|
SWT.Help |
Triggered when the user requests help |
|
SWT.Hide |
Triggered when the widget is hidden |
|
SWT.Iconify |
Triggered when the widget is minimized |
|
SWT.KeyDown |
Triggered when the user presses a key |
|
SWT.KeyUp |
Triggered when the user releases a key |
|
SWT.MenuDetect |
Triggered when a menu is selected |
|
SWT.Modify |
Triggered when the text of a widget is modified |
|
SWT.MouseDoubleClick |
Triggered when the mouse is double-clicked |
|
SWT.MouseDown |
Triggered when the mouse button is clicked |
|
SWT.MouseEnter |
Triggered when the mouse pointer enters the widget |
|
SWT.MouseExit |
Triggered when the mouse pointer exits the widget |
|
SWT.MouseHover |
Triggered when the mouse pointer hovers over the widget |
|
SWT.MouseMove |
Triggered when the mouse pointer moves through the widget |
|
SWT.MouseUp |
Triggered when the mouse button is released |
|
SWT.Move |
Triggered when the widget is moved |
|
SWT.None |
Null event |
|
SWT.Paint |
Triggered when the widget is painted |
|
SWT.Resize |
Triggered when the widget is resized |
|
SWT.Selection |
Triggered when the widget is selected |
|
SWT.Show |
Triggered when the widget is shown |
|
SWT.Traverse |
Triggered when the user tabs through the controls |
|
SWT.Verify |
Triggered when the text for the widget is about to change, allowing you to veto the change |
SWT提供了很多事件监听器的接口(Interface)和适配器(Adapter),可以为控件添加相应的监听器。
为一个文本框添加按键监听器代码形如:
txtSample.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent event) {
switch (event.keyCode) {
case SWT.KEYPAD_CR:
case SWT.CR:
System.out.println("Enter Key be pressed!");
break;
}
}
}); 为一个按键添加单击事件监听器,代码形如:
btnSample.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
//在这里添加按钮单击事件的处理代码
}
}); 给文本框添加文本框内容改变的监听器,代码形如:
txtSample.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
//在这里添加文本框文本内容改变的处理代码
//一般地,要先移除该文本框的所有监听器以避免不必要的死循环
//然后在最后把原来的监听器添加回来
}
});控件的鼠标双击事件也是经常用到的,其添加监听器的代码形如:
shell.addMouseListener(new MouseListener() {
public void mouseDoubleClick(MouseEvent event) {
//在这里添加控件双击事件的处理代码
}
});另外,当程序中要处理数据输入时,SWT包提供的输入验证监听器非常有用,它可以避免用户的无效数据输入,其添加监听器的代码形如:
/*Called when user types into text box,but before the text box gets what the user typed*/
txtSample.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent event) {
//下面是用户输入验证的程序代码示例
//Assume you don't allow it
event.doit = false;
//Get the Character typed
char myChar = event.character;
//Allow 0~9
if ( Character.isDigit(myChar) ) event.doit = true;
//Allow Backspace
if ( myChar == '/b' ) event.doit = true;
else{
MessageBox msgBox = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
msgBox.setText( "输入错误!" );
msgBox.setMessage( "你不能输入除数字和退格键以外的字符!" );
msgBox.open();
}
}
}); 最后再给一个如何处理消息框用户按了哪个键的代码例子:
MessageBox msgBox = new MessageBox( shell, SWT.YES | SWT.NO | SWT.ICON_QUESTION );
msgBox.setText( "消息框的标题" );
msgBox.setMessage( "消息框的提示文字" );
switch( msgBox.open() ){
//msgBox.open()返回所选按钮的常量
case SWT.YES:
//程序处理
break;
case SWT.NO:
//程序处理
break;
}
本文介绍SWT包中各种事件类型的处理方法,包括按键监听、文本框内容改变监听、鼠标双击事件监听等,并提供示例代码。
1402

被折叠的 条评论
为什么被折叠?



