当我编辑文本字段并按 Ctrl + A 时,不是选择字段中的所有文本,而是主菜单的 Ctrl 的处理程序 + A 被调用。
如何恢复默认行为,而不会丢失菜单中的 Ctrl + A 加速器?
答案 0 :(得分:4)
Ctrl + A 在我的WinXP工作站上没有使用以下代码段执行任何操作。所以没有“默认行为”:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class Snippet22 {
public static void main( String[] args ) {
Display display = new Display();
Shell shell = new Shell(display);
Text text = new Text(shell, 0);
text.setText("ASDF");
text.setSize(64, 32);
shell.pack();
shell.open();
while ( !shell.isDisposed() ) {
if ( !display.readAndDispatch() ) display.sleep();
}
display.dispose();
}
}
如果您希望 Ctrl + A 按预期工作,请添加此类监听器:
Listener ctrlAListener = new Listener() {
public void handleEvent( Event event ) {
if ( event.stateMask == SWT.CTRL && event.keyCode == 'a' ) {
((Text)event.widget).selectAll();
}
}
};
并将其添加到您使用的每个Text
实例中:
text.addListener(SWT.KeyUp, ctrlAListener);