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