SWT中关于FocusListener的问题

在SWT中FocusListener可以用来监听一个textfield是否被选中,
在下面的程序里,我在两个text上加了FocusListener,功能是当
text被选中时,上面的文字会呈全选状态。
我不知道为什么只对第一个有效?
后来才发现是因为两个text的类型不一样。
只是对SWT.SINGLE的text,好象selectAll()无效 。

//TextField1.java
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.widgets.*;

public class TextField1 {
    
    Display d;
    Shell s;
    TextField1( )    {
        d = new Display( );
        s = new Shell(d);
        s.setSize(250,250);
        s.setText("A Text Field Example");
        Text text1 = new Text(s, SWT.WRAP |SWT.BORDER);
        text1.setBounds(100,50,100,20);
        text1.setTextLimit(5);
        text1.setText("12345");
        Text text2 = new Text(s, SWT.SINGLE | SWT.BORDER);
        text2.setBounds(100,75,100,20);
        text2.setTextLimit(10);
        
        // add a focus listener
        FocusListener focusListener = new FocusListener( ) {
            public void focusGained(FocusEvent e) {
                Text t = (Text)e.widget;
                t.selectAll();
            }
            public void focusLost(FocusEvent e) {
                Text t = (Text)e.widget;
                if(t.getSelectionCount( ) > 0){
                    t.clearSelection( );
                }                
            }
        };
        text1.addFocusListener(focusListener);
        text2.addFocusListener(focusListener);
        s.open( );
        while(!s.isDisposed( )){
            if(!d.readAndDispatch( ))
                d.sleep( );
        }
        d.dispose( );
    }
    public static void main(String[] args) {
        TextField1 tx = new TextField1();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值