Advertisement

SWT的Text的几种监听事件

阅读量:

最近在部门一个项目里的维护系统进行开发维护时,遇到一些SWT技术中文本框(Text)监听事件运用的问题,就找时间把这些整理了一下,方便以后的使用。

a.文本框按键监听事件,遇到的应用场景:需要对文本框进行输入长度限制时。

复制代码
 txtSample.addKeyListener(new KeyAdapter() {  //按键监听

    
     @Override
    
     public void keyPressed(KeyEvent e) {
    
         if(txtSample.getText().length > 3){ //判断文本框输入长度是否大于4
    
             e.doit = false;  //doit属性如果为true,则字符允许输入,反之不允许 
    
         }
    
     }
    
 });
    
    
    
    
    AI写代码

b.文本框焦点获取监听,遇到的应用场景:当文本框的输入不是使用键盘而是界面上的按钮键盘。

复制代码
 countText1.addFocusListener(new FocusAdapter() { // 焦点监听

    
     @Override
    
     public void focusGained(FocusEvent arg0) {
    
         flag = 1;  //flag为一个全局变量,用来标志当前是在哪个文本框进行输入
    
         }
    
 });
    
    
    
    
    AI写代码

c.内容改变监听事件,遇到的应用场景:一个文本框内容改变时,其他文本框或label标签需要同步改变。

复制代码
  countText1.addModifyListener(new ModifyListener() {// 内容改变监听

    
      @Override
    
      public void modifyText(ModifyEvent arg0) {
    
          setTotalValue(); //用来进行计算总计项的方法
    
          }
    
 });
    
    
    
    
    AI写代码

d.输入类型限制监听,遇到的应用场景:当文本框的输入只允许输入数字(输入身份证号码或金额)。

复制代码
     countText1.addVerifyListener(new TextVerifyListener(1)); // 输入类型监听限制
    
    AI写代码

可以写一个专门用来限制输入类型的公共方法类TextVerifyListener类。

复制代码
 import org.eclipse.swt.events.VerifyEvent;

    
 import org.eclipse.swt.events.VerifyListener;
    
  
    
 public class TextVerifyListener implements VerifyListener{
    
  
    
 	private int type;
    
 	public TextVerifyListener(int type){
    
 		this.type=type;
    
 	}
    
 	public void verifyText(VerifyEvent e) {
    
 	    // TODO Auto-generated method stub
    
 	    if(type==1){//只能输入数字
    
 	        boolean b = "0123456789".indexOf(e.text) >= 0 ;
    
                 e.doit = b;  //doit属性如果为true,则字符允许输入,反之不允许
    
                 return;
    
 	    }
    
 	}
    
 	
    
 }
    
    
    
    
    AI写代码

e.文本框回车键事件监听,应用场景:文本框输入结束后,敲回车键来完成某个事件。其实用到也是上面说到的按键监听事件。

复制代码
 countText1.addKeyListener(new KeyAdapter() {

    
     @Override
    
     public void keyPressed(KeyEvent e) {
    
         if (e.getKeyChar() == KeyEvent.VK_ENTER) {//假如是enter键的话
    
         bu.login();//要进行相应的事件处理
    
         }
    
     }
    
 });
    
    
    
    
    AI写代码

转载于:https://my.oschina.net/iuei/blog/631113

全部评论 (0)

还没有任何评论哟~