如何在SWT中恢复窗口小部件的默认键绑定(Ctrl + A,Ctrl + C等)?

时间:2010-11-10 11:01:42

标签: java events swt keyboard-shortcuts

当我编辑文本字段并按 Ctrl + A 时,不是选择字段中的所有文本,而是主菜单的 Ctrl + A 被调用。

如何恢复默认行为,而不会丢失菜单中的 Ctrl + A 加速器?

1 个答案:

答案 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);