2013-08-14 1 views
2

Каков наилучший способ определения действий для большого количества сопоставлений клавиш для компонента в Swing?Работа с LOTS сопоставлений клавиш

Я построил собственный текстовый вид в Swing и хочу определить действия для множества ключей. То, как я сейчас делаю это (около 10 ключей до сих пор) является:

ActionMap actionMap = DBDocument.this.getActionMap(); 
int condition = JComponent.WHEN_FOCUSED; 
InputMap inputMap = DBDocument.this.getInputMap(condition); 
String tab = "tab"; 
actionMap.put(tab, new AbstractAction() { 
      private static final long serialVersionUID = 1L; 
      @Override 
      public void actionPerformed(ActionEvent ap) { 
       if(mDocumentModel != null){ 
        //Do some stuff here 
       } 
      } 
      }); 

Это, очевидно, очень многословным способ определения клавиш. В идеале я мог бы определить действие, которое имеет множество возможностей (например, [A-Z] или [0-9]). Я искал определения в OpenJDK, но не очень далеко.

+1

Поместить все ["МНОГИ КНОПКИ" в массив] (http://stackoverflow.com/a/7940227/714968), используйте один массив для простых клавиш [AZ]/[0-9], второй для модификатора + (например, ALT + [AZ]/[0-9]) и т. д. – mKorbel

+0

и использовать is/setEnabled для вашего XxxAction – mKorbel

ответ

1

Превосходство во избежание повторения путем применения принципа DRY. Приводится несколько примеров DRY-действий here, но общий поток - это действия, которые используют общую модель, например Document, или разделяются группой связанных кнопок.