Как восстановить стандартные комбинации клавиш (Ctrl + A, Ctrl + C и т. Д.) Для виджетов в SWT? - PullRequest
2 голосов
/ 10 ноября 2010

Когда я редактирую текстовое поле и нажимаю Ctrl + A , тогда вместо выделения всего текста в поле используется обработчик главного меню для Ctrl + A называется.

Как восстановить поведение по умолчанию, не теряя в меню ускоритель Ctrl + A ?

1 Ответ

4 голосов
/ 11 ноября 2010

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);
...