SWT中关于FocusListener的问题

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在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();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航