Java Tutorial/Swing Event/KeyStroke

Материал из Java эксперт
Перейти к: навигация, поиск

Activating a Keystroke When Any Child Component Has Focus

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton();
   MyAction action = new MyAction();
   component.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
       KeyStroke.getKeyStroke("F2"), action.getValue(Action.NAME));
 }

} class MyAction extends AbstractAction {

 public MyAction() {
   super("my action");
 }
 public void actionPerformed(ActionEvent e) {
   System.out.println("hi");
 }

}</source>





Activating a Keystroke When Any Component in the Window Has Focus

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton();
   MyAction action = new MyAction();
   component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F2"),
       action.getValue(Action.NAME));
 }

} class MyAction extends AbstractAction {

 public MyAction() {
   super("my action");
 }
 public void actionPerformed(ActionEvent e) {
   System.out.println("hi");
 }

}</source>





Bind a keystroke to shift-space

   <source lang="java">

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) {
   JTextField component = new JTextField(10);
   
   component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("shift pressed SPACE"), "actionName");
   JFrame f = new JFrame();
   f.add(component);
   f.setSize(300, 300);
   f.setVisible(true);
 }

}</source>





Converting a KeyStroke to a String

   <source lang="java">

import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("button");
   InputMap map = component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
   list(map, map.keys());
   list(map, map.allKeys());
 }
 static void list(InputMap map, KeyStroke[] keys) {
   if (keys == null) {
     return;
   }
   for (int i = 0; i < keys.length; i++) {
     keyStroke2String(keys[i]);
     while (map.get(keys[i]) == null) {
       map = map.getParent();
     }
     if (map.get(keys[i]) instanceof String) {
       String actionName = (String) map.get(keys[i]);
     } else {
       Action action = (Action) map.get(keys[i]);
     }
   }
 }
 static void keyStroke2String(KeyStroke key) {
   int m = key.getModifiers();
   if ((m & (InputEvent.SHIFT_DOWN_MASK | InputEvent.SHIFT_MASK)) != 0) {
     System.out.println("shift ");
   }
   if ((m & (InputEvent.CTRL_DOWN_MASK | InputEvent.CTRL_MASK)) != 0) {
     System.out.println("ctrl ");
   }
   if ((m & (InputEvent.META_DOWN_MASK | InputEvent.META_MASK)) != 0) {
     System.out.println("meta ");
   }
   if ((m & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_MASK)) != 0) {
     System.out.println("alt ");
   }
   if ((m & (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON1_MASK)) != 0) {
     System.out.println("button1 ");
   }
   if ((m & (InputEvent.BUTTON2_DOWN_MASK | InputEvent.BUTTON2_MASK)) != 0) {
     System.out.println("button2 ");
   }
   if ((m & (InputEvent.BUTTON3_DOWN_MASK | InputEvent.BUTTON3_MASK)) != 0) {
     System.out.println("button3 ");
   }
   switch (key.getKeyEventType()) {
   case KeyEvent.KEY_TYPED:
     System.out.println("typed ");
     System.out.println(key.getKeyChar() + " ");
     break;
   case KeyEvent.KEY_PRESSED:
     System.out.println("pressed ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   case KeyEvent.KEY_RELEASED:
     System.out.println("released ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   default:
     System.out.println("unknown-event-type ");
     break;
   }
 }
 static String getKeyText(int keyCode) {
   if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 || keyCode >= KeyEvent.VK_A
       && keyCode <= KeyEvent.VK_Z) {
     return String.valueOf((char) keyCode);
   }
   switch (keyCode) {
   case KeyEvent.VK_COMMA:
     return "COMMA";
   case KeyEvent.VK_PERIOD:
     return "PERIOD";
   case KeyEvent.VK_SLASH:
     return "SLASH";
   case KeyEvent.VK_SEMICOLON:
     return "SEMICOLON";
   case KeyEvent.VK_EQUALS:
     return "EQUALS";
   case KeyEvent.VK_OPEN_BRACKET:
     return "OPEN_BRACKET";
   case KeyEvent.VK_BACK_SLASH:
     return "BACK_SLASH";
   case KeyEvent.VK_CLOSE_BRACKET:
     return "CLOSE_BRACKET";
   case KeyEvent.VK_ENTER:
     return "ENTER";
   case KeyEvent.VK_BACK_SPACE:
     return "BACK_SPACE";
   case KeyEvent.VK_TAB:
     return "TAB";
   case KeyEvent.VK_CANCEL:
     return "CANCEL";
   case KeyEvent.VK_CLEAR:
     return "CLEAR";
   case KeyEvent.VK_SHIFT:
     return "SHIFT";
   case KeyEvent.VK_CONTROL:
     return "CONTROL";
   case KeyEvent.VK_ALT:
     return "ALT";
   case KeyEvent.VK_PAUSE:
     return "PAUSE";
   case KeyEvent.VK_CAPS_LOCK:
     return "CAPS_LOCK";
   case KeyEvent.VK_ESCAPE:
     return "ESCAPE";
   case KeyEvent.VK_SPACE:
     return "SPACE";
   case KeyEvent.VK_PAGE_UP:
     return "PAGE_UP";
   case KeyEvent.VK_PAGE_DOWN:
     return "PAGE_DOWN";
   case KeyEvent.VK_END:
     return "END";
   case KeyEvent.VK_HOME:
     return "HOME";
   case KeyEvent.VK_LEFT:
     return "LEFT";
   case KeyEvent.VK_UP:
     return "UP";
   case KeyEvent.VK_RIGHT:
     return "RIGHT";
   case KeyEvent.VK_DOWN:
     return "DOWN";
   case KeyEvent.VK_MULTIPLY:
     return "MULTIPLY";
   case KeyEvent.VK_ADD:
     return "ADD";
   case KeyEvent.VK_SEPARATOR:
     return "SEPARATOR";
   case KeyEvent.VK_SUBTRACT:
     return "SUBTRACT";
   case KeyEvent.VK_DECIMAL:
     return "DECIMAL";
   case KeyEvent.VK_DIVIDE:
     return "DIVIDE";
   case KeyEvent.VK_DELETE:
     return "DELETE";
   case KeyEvent.VK_NUM_LOCK:
     return "NUM_LOCK";
   case KeyEvent.VK_SCROLL_LOCK:
     return "SCROLL_LOCK";
   case KeyEvent.VK_F1:
     return "F1";
   case KeyEvent.VK_F2:
     return "F2";
   case KeyEvent.VK_F3:
     return "F3";
   case KeyEvent.VK_F4:
     return "F4";
   case KeyEvent.VK_F5:
     return "F5";
   case KeyEvent.VK_F6:
     return "F6";
   case KeyEvent.VK_F7:
     return "F7";
   case KeyEvent.VK_F8:
     return "F8";
   case KeyEvent.VK_F9:
     return "F9";
   case KeyEvent.VK_F10:
     return "F10";
   case KeyEvent.VK_F11:
     return "F11";
   case KeyEvent.VK_F12:
     return "F12";
   case KeyEvent.VK_F13:
     return "F13";
   case KeyEvent.VK_F14:
     return "F14";
   case KeyEvent.VK_F15:
     return "F15";
   case KeyEvent.VK_F16:
     return "F16";
   case KeyEvent.VK_F17:
     return "F17";
   case KeyEvent.VK_F18:
     return "F18";
   case KeyEvent.VK_F19:
     return "F19";
   case KeyEvent.VK_F20:
     return "F20";
   case KeyEvent.VK_F21:
     return "F21";
   case KeyEvent.VK_F22:
     return "F22";
   case KeyEvent.VK_F23:
     return "F23";
   case KeyEvent.VK_F24:
     return "F24";
   case KeyEvent.VK_PRINTSCREEN:
     return "PRINTSCREEN";
   case KeyEvent.VK_INSERT:
     return "INSERT";
   case KeyEvent.VK_HELP:
     return "HELP";
   case KeyEvent.VK_META:
     return "META";
   case KeyEvent.VK_BACK_QUOTE:
     return "BACK_QUOTE";
   case KeyEvent.VK_QUOTE:
     return "QUOTE";
   case KeyEvent.VK_KP_UP:
     return "KP_UP";
   case KeyEvent.VK_KP_DOWN:
     return "KP_DOWN";
   case KeyEvent.VK_KP_LEFT:
     return "KP_LEFT";
   case KeyEvent.VK_KP_RIGHT:
     return "KP_RIGHT";
   case KeyEvent.VK_DEAD_GRAVE:
     return "DEAD_GRAVE";
   case KeyEvent.VK_DEAD_ACUTE:
     return "DEAD_ACUTE";
   case KeyEvent.VK_DEAD_CIRCUMFLEX:
     return "DEAD_CIRCUMFLEX";
   case KeyEvent.VK_DEAD_TILDE:
     return "DEAD_TILDE";
   case KeyEvent.VK_DEAD_MACRON:
     return "DEAD_MACRON";
   case KeyEvent.VK_DEAD_BREVE:
     return "DEAD_BREVE";
   case KeyEvent.VK_DEAD_ABOVEDOT:
     return "DEAD_ABOVEDOT";
   case KeyEvent.VK_DEAD_DIAERESIS:
     return "DEAD_DIAERESIS";
   case KeyEvent.VK_DEAD_ABOVERING:
     return "DEAD_ABOVERING";
   case KeyEvent.VK_DEAD_DOUBLEACUTE:
     return "DEAD_DOUBLEACUTE";
   case KeyEvent.VK_DEAD_CARON:
     return "DEAD_CARON";
   case KeyEvent.VK_DEAD_CEDILLA:
     return "DEAD_CEDILLA";
   case KeyEvent.VK_DEAD_OGONEK:
     return "DEAD_OGONEK";
   case KeyEvent.VK_DEAD_IOTA:
     return "DEAD_IOTA";
   case KeyEvent.VK_DEAD_VOICED_SOUND:
     return "DEAD_VOICED_SOUND";
   case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
     return "DEAD_SEMIVOICED_SOUND";
   case KeyEvent.VK_AMPERSAND:
     return "AMPERSAND";
   case KeyEvent.VK_ASTERISK:
     return "ASTERISK";
   case KeyEvent.VK_QUOTEDBL:
     return "QUOTEDBL";
   case KeyEvent.VK_LESS:
     return "LESS";
   case KeyEvent.VK_GREATER:
     return "GREATER";
   case KeyEvent.VK_BRACELEFT:
     return "BRACELEFT";
   case KeyEvent.VK_BRACERIGHT:
     return "BRACERIGHT";
   case KeyEvent.VK_AT:
     return "AT";
   case KeyEvent.VK_COLON:
     return "COLON";
   case KeyEvent.VK_CIRCUMFLEX:
     return "CIRCUMFLEX";
   case KeyEvent.VK_DOLLAR:
     return "DOLLAR";
   case KeyEvent.VK_EURO_SIGN:
     return "EURO_SIGN";
   case KeyEvent.VK_EXCLAMATION_MARK:
     return "EXCLAMATION_MARK";
   case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
     return "INVERTED_EXCLAMATION_MARK";
   case KeyEvent.VK_LEFT_PARENTHESIS:
     return "LEFT_PARENTHESIS";
   case KeyEvent.VK_NUMBER_SIGN:
     return "NUMBER_SIGN";
   case KeyEvent.VK_MINUS:
     return "MINUS";
   case KeyEvent.VK_PLUS:
     return "PLUS";
   case KeyEvent.VK_RIGHT_PARENTHESIS:
     return "RIGHT_PARENTHESIS";
   case KeyEvent.VK_UNDERSCORE:
     return "UNDERSCORE";
   case KeyEvent.VK_FINAL:
     return "FINAL";
   case KeyEvent.VK_CONVERT:
     return "CONVERT";
   case KeyEvent.VK_NONCONVERT:
     return "NONCONVERT";
   case KeyEvent.VK_ACCEPT:
     return "ACCEPT";
   case KeyEvent.VK_MODECHANGE:
     return "MODECHANGE";
   case KeyEvent.VK_KANA:
     return "KANA";
   case KeyEvent.VK_KANJI:
     return "KANJI";
   case KeyEvent.VK_ALPHANUMERIC:
     return "ALPHANUMERIC";
   case KeyEvent.VK_KATAKANA:
     return "KATAKANA";
   case KeyEvent.VK_HIRAGANA:
     return "HIRAGANA";
   case KeyEvent.VK_FULL_WIDTH:
     return "FULL_WIDTH";
   case KeyEvent.VK_HALF_WIDTH:
     return "HALF_WIDTH";
   case KeyEvent.VK_ROMAN_CHARACTERS:
     return "ROMAN_CHARACTERS";
   case KeyEvent.VK_ALL_CANDIDATES:
     return "ALL_CANDIDATES";
   case KeyEvent.VK_PREVIOUS_CANDIDATE:
     return "PREVIOUS_CANDIDATE";
   case KeyEvent.VK_CODE_INPUT:
     return "CODE_INPUT";
   case KeyEvent.VK_JAPANESE_KATAKANA:
     return "JAPANESE_KATAKANA";
   case KeyEvent.VK_JAPANESE_HIRAGANA:
     return "JAPANESE_HIRAGANA";
   case KeyEvent.VK_JAPANESE_ROMAN:
     return "JAPANESE_ROMAN";
   case KeyEvent.VK_KANA_LOCK:
     return "KANA_LOCK";
   case KeyEvent.VK_INPUT_METHOD_ON_OFF:
     return "INPUT_METHOD_ON_OFF";
   case KeyEvent.VK_AGAIN:
     return "AGAIN";
   case KeyEvent.VK_UNDO:
     return "UNDO";
   case KeyEvent.VK_COPY:
     return "COPY";
   case KeyEvent.VK_PASTE:
     return "PASTE";
   case KeyEvent.VK_CUT:
     return "CUT";
   case KeyEvent.VK_FIND:
     return "FIND";
   case KeyEvent.VK_PROPS:
     return "PROPS";
   case KeyEvent.VK_STOP:
     return "STOP";
   case KeyEvent.VK_COMPOSE:
     return "COMPOSE";
   case KeyEvent.VK_ALT_GRAPH:
     return "ALT_GRAPH";
   }
   if (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) {
     char c = (char) (keyCode - KeyEvent.VK_NUMPAD0 + "0");
     return "NUMPAD" + c;
   }
   return "unknown(0x" + Integer.toString(keyCode, 16) + ")";
 }

}</source>





Creating a KeyStroke

   <source lang="java">

KeyStroke space = KeyStroke.getKeyStroke("Z");

  KeyStroke fromKeyEvent = KeyStroke.getKeyStrokeForEvent(keyEvent);</source>
   
  
 
  



Creating a KeyStroke and Binding It to an Action

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("Button");
   component.getInputMap().put(KeyStroke.getKeyStroke("F2"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("control A"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("shift F2"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("("), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("button3 F"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("typed x"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("released DELETE"), "actionName");
   component.getInputMap().put(KeyStroke.getKeyStroke("shift UP"), "actionName");
   component.getActionMap().put("actionName", new AbstractAction("actionName") {
     public void actionPerformed(ActionEvent evt) {
       System.out.println(evt);
     }
   });
 }

}</source>





Get Key Text

   <source lang="java">

/*

* Copyright 2000,2005 wingS development team.
*
* This file is part of wingS (http://wingsframework.org).
*
* wingS is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* Please see COPYING for the complete licence.
*/

import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.KeyStroke; /**

* This source code was taken from a code example at http://javaalmanac.ru/
* and slightly altered to fit our purpose.
* @author ole
*
*/

public class KeystrokeUtil {

   public static String keyStroke2String(KeyStroke key) {
       if (key == null) return "";
       StringBuilder s = new StringBuilder(50);
       int m = key.getModifiers();
       if ((m & (InputEvent.CTRL_DOWN_MASK|InputEvent.CTRL_MASK)) != 0) {
           s.append("Ctrl+");
       }
       if ((m & (InputEvent.META_DOWN_MASK|InputEvent.META_MASK)) != 0) {
           s.append("Meta+");
       }
       if ((m & (InputEvent.ALT_DOWN_MASK|InputEvent.ALT_MASK)) != 0) {
           s.append("Alt+");
       }
       if ((m & (InputEvent.SHIFT_DOWN_MASK|InputEvent.SHIFT_MASK)) != 0) {
           s.append("Shift+");
       }
       if ((m & (InputEvent.BUTTON1_DOWN_MASK|InputEvent.BUTTON1_MASK)) != 0) {
           s.append("Button1+");
       }
       if ((m & (InputEvent.BUTTON2_DOWN_MASK|InputEvent.BUTTON2_MASK)) != 0) {
           s.append("Button2+");
       }
       if ((m & (InputEvent.BUTTON3_DOWN_MASK|InputEvent.BUTTON3_MASK)) != 0) {
           s.append("Button3+");
       }
       switch (key.getKeyEventType()) {
       case KeyEvent.KEY_TYPED:
           s.append(key.getKeyChar() + " ");
           break;
       case KeyEvent.KEY_PRESSED:
       case KeyEvent.KEY_RELEASED:
           s.append(getKeyText(key.getKeyCode()) + " ");
           break;
       default:
           s.append("unknown-event-type ");
           break;
       }
       return s.toString();
   }
   public static String getKeyText(int keyCode) {
       if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 ||
           keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z) {
           return String.valueOf((char)keyCode);
       }
       switch(keyCode) {
         case KeyEvent.VK_COMMA: return "COMMA";
         case KeyEvent.VK_PERIOD: return "PERIOD";
         case KeyEvent.VK_SLASH: return "SLASH";
         case KeyEvent.VK_SEMICOLON: return "SEMICOLON";
         case KeyEvent.VK_EQUALS: return "EQUALS";
         case KeyEvent.VK_OPEN_BRACKET: return "OPEN_BRACKET";
         case KeyEvent.VK_BACK_SLASH: return "BACK_SLASH";
         case KeyEvent.VK_CLOSE_BRACKET: return "CLOSE_BRACKET";
         case KeyEvent.VK_ENTER: return "ENTER";
         case KeyEvent.VK_BACK_SPACE: return "BACK_SPACE";
         case KeyEvent.VK_TAB: return "TAB";
         case KeyEvent.VK_CANCEL: return "CANCEL";
         case KeyEvent.VK_CLEAR: return "CLEAR";
         case KeyEvent.VK_SHIFT: return "SHIFT";
         case KeyEvent.VK_CONTROL: return "CONTROL";
         case KeyEvent.VK_ALT: return "ALT";
         case KeyEvent.VK_PAUSE: return "PAUSE";
         case KeyEvent.VK_CAPS_LOCK: return "CAPS_LOCK";
         case KeyEvent.VK_ESCAPE: return "ESCAPE";
         case KeyEvent.VK_SPACE: return "SPACE";
         case KeyEvent.VK_PAGE_UP: return "PAGE_UP";
         case KeyEvent.VK_PAGE_DOWN: return "PAGE_DOWN";
         case KeyEvent.VK_END: return "END";
         case KeyEvent.VK_HOME: return "HOME";
         case KeyEvent.VK_LEFT: return "LEFT";
         case KeyEvent.VK_UP: return "UP";
         case KeyEvent.VK_RIGHT: return "RIGHT";
         case KeyEvent.VK_DOWN: return "DOWN";
         // numpad numeric keys handled below
         case KeyEvent.VK_MULTIPLY: return "MULTIPLY";
         case KeyEvent.VK_ADD: return "ADD";
         case KeyEvent.VK_SEPARATOR: return "SEPARATOR";
         case KeyEvent.VK_SUBTRACT: return "SUBTRACT";
         case KeyEvent.VK_DECIMAL: return "DECIMAL";
         case KeyEvent.VK_DIVIDE: return "DIVIDE";
         case KeyEvent.VK_DELETE: return "DELETE";
         case KeyEvent.VK_NUM_LOCK: return "NUM_LOCK";
         case KeyEvent.VK_SCROLL_LOCK: return "SCROLL_LOCK";
         case KeyEvent.VK_F1: return "F1";
         case KeyEvent.VK_F2: return "F2";
         case KeyEvent.VK_F3: return "F3";
         case KeyEvent.VK_F4: return "F4";
         case KeyEvent.VK_F5: return "F5";
         case KeyEvent.VK_F6: return "F6";
         case KeyEvent.VK_F7: return "F7";
         case KeyEvent.VK_F8: return "F8";
         case KeyEvent.VK_F9: return "F9";
         case KeyEvent.VK_F10: return "F10";
         case KeyEvent.VK_F11: return "F11";
         case KeyEvent.VK_F12: return "F12";
         case KeyEvent.VK_F13: return "F13";
         case KeyEvent.VK_F14: return "F14";
         case KeyEvent.VK_F15: return "F15";
         case KeyEvent.VK_F16: return "F16";
         case KeyEvent.VK_F17: return "F17";
         case KeyEvent.VK_F18: return "F18";
         case KeyEvent.VK_F19: return "F19";
         case KeyEvent.VK_F20: return "F20";
         case KeyEvent.VK_F21: return "F21";
         case KeyEvent.VK_F22: return "F22";
         case KeyEvent.VK_F23: return "F23";
         case KeyEvent.VK_F24: return "F24";
         case KeyEvent.VK_PRINTSCREEN: return "PRINTSCREEN";
         case KeyEvent.VK_INSERT: return "INSERT";
         case KeyEvent.VK_HELP: return "HELP";
         case KeyEvent.VK_META: return "META";
         case KeyEvent.VK_BACK_QUOTE: return "BACK_QUOTE";
         case KeyEvent.VK_QUOTE: return "QUOTE";
         case KeyEvent.VK_KP_UP: return "KP_UP";
         case KeyEvent.VK_KP_DOWN: return "KP_DOWN";
         case KeyEvent.VK_KP_LEFT: return "KP_LEFT";
         case KeyEvent.VK_KP_RIGHT: return "KP_RIGHT";
         case KeyEvent.VK_DEAD_GRAVE: return "DEAD_GRAVE";
         case KeyEvent.VK_DEAD_ACUTE: return "DEAD_ACUTE";
         case KeyEvent.VK_DEAD_CIRCUMFLEX: return "DEAD_CIRCUMFLEX";
         case KeyEvent.VK_DEAD_TILDE: return "DEAD_TILDE";
         case KeyEvent.VK_DEAD_MACRON: return "DEAD_MACRON";
         case KeyEvent.VK_DEAD_BREVE: return "DEAD_BREVE";
         case KeyEvent.VK_DEAD_ABOVEDOT: return "DEAD_ABOVEDOT";
         case KeyEvent.VK_DEAD_DIAERESIS: return "DEAD_DIAERESIS";
         case KeyEvent.VK_DEAD_ABOVERING: return "DEAD_ABOVERING";
         case KeyEvent.VK_DEAD_DOUBLEACUTE: return "DEAD_DOUBLEACUTE";
         case KeyEvent.VK_DEAD_CARON: return "DEAD_CARON";
         case KeyEvent.VK_DEAD_CEDILLA: return "DEAD_CEDILLA";
         case KeyEvent.VK_DEAD_OGONEK: return "DEAD_OGONEK";
         case KeyEvent.VK_DEAD_IOTA: return "DEAD_IOTA";
         case KeyEvent.VK_DEAD_VOICED_SOUND: return "DEAD_VOICED_SOUND";
         case KeyEvent.VK_DEAD_SEMIVOICED_SOUND: return "DEAD_SEMIVOICED_SOUND";
         case KeyEvent.VK_AMPERSAND: return "AMPERSAND";
         case KeyEvent.VK_ASTERISK: return "ASTERISK";
         case KeyEvent.VK_QUOTEDBL: return "QUOTEDBL";
         case KeyEvent.VK_LESS: return "LESS";
         case KeyEvent.VK_GREATER: return "GREATER";
         case KeyEvent.VK_BRACELEFT: return "BRACELEFT";
         case KeyEvent.VK_BRACERIGHT: return "BRACERIGHT";
         case KeyEvent.VK_AT: return "AT";
         case KeyEvent.VK_COLON: return "COLON";
         case KeyEvent.VK_CIRCUMFLEX: return "CIRCUMFLEX";
         case KeyEvent.VK_DOLLAR: return "DOLLAR";
         case KeyEvent.VK_EURO_SIGN: return "EURO_SIGN";
         case KeyEvent.VK_EXCLAMATION_MARK: return "EXCLAMATION_MARK";
         case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
                  return "INVERTED_EXCLAMATION_MARK";
         case KeyEvent.VK_LEFT_PARENTHESIS: return "LEFT_PARENTHESIS";
         case KeyEvent.VK_NUMBER_SIGN: return "NUMBER_SIGN";
         case KeyEvent.VK_MINUS: return "MINUS";
         case KeyEvent.VK_PLUS: return "PLUS";
         case KeyEvent.VK_RIGHT_PARENTHESIS: return "RIGHT_PARENTHESIS";
         case KeyEvent.VK_UNDERSCORE: return "UNDERSCORE";
         case KeyEvent.VK_FINAL: return "FINAL";
         case KeyEvent.VK_CONVERT: return "CONVERT";
         case KeyEvent.VK_NONCONVERT: return "NONCONVERT";
         case KeyEvent.VK_ACCEPT: return "ACCEPT";
         case KeyEvent.VK_MODECHANGE: return "MODECHANGE";
         case KeyEvent.VK_KANA: return "KANA";
         case KeyEvent.VK_KANJI: return "KANJI";
         case KeyEvent.VK_ALPHANUMERIC: return "ALPHANUMERIC";
         case KeyEvent.VK_KATAKANA: return "KATAKANA";
         case KeyEvent.VK_HIRAGANA: return "HIRAGANA";
         case KeyEvent.VK_FULL_WIDTH: return "FULL_WIDTH";
         case KeyEvent.VK_HALF_WIDTH: return "HALF_WIDTH";
         case KeyEvent.VK_ROMAN_CHARACTERS: return "ROMAN_CHARACTERS";
         case KeyEvent.VK_ALL_CANDIDATES: return "ALL_CANDIDATES";
         case KeyEvent.VK_PREVIOUS_CANDIDATE: return "PREVIOUS_CANDIDATE";
         case KeyEvent.VK_CODE_INPUT: return "CODE_INPUT";
         case KeyEvent.VK_JAPANESE_KATAKANA: return "JAPANESE_KATAKANA";
         case KeyEvent.VK_JAPANESE_HIRAGANA: return "JAPANESE_HIRAGANA";
         case KeyEvent.VK_JAPANESE_ROMAN: return "JAPANESE_ROMAN";
         case KeyEvent.VK_KANA_LOCK: return "KANA_LOCK";
         case KeyEvent.VK_INPUT_METHOD_ON_OFF: return "INPUT_METHOD_ON_OFF";
         case KeyEvent.VK_AGAIN: return "AGAIN";
         case KeyEvent.VK_UNDO: return "UNDO";
         case KeyEvent.VK_COPY: return "COPY";
         case KeyEvent.VK_PASTE: return "PASTE";
         case KeyEvent.VK_CUT: return "CUT";
         case KeyEvent.VK_FIND: return "FIND";
         case KeyEvent.VK_PROPS: return "PROPS";
         case KeyEvent.VK_STOP: return "STOP";
         case KeyEvent.VK_COMPOSE: return "COMPOSE";
         case KeyEvent.VK_ALT_GRAPH: return "ALT_GRAPH";
       }
       if (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) {
           char c = (char)(keyCode - KeyEvent.VK_NUMPAD0 + "0");
           return "NUMPAD"+c;
       }
       return "unknown(0x" + Integer.toString(keyCode, 16) + ")";
   }

}</source>





KeyStroke Class

ConstantDescriptionWHEN_FOCUSEDActivates the keystroke when the actual component has the input focusWHEN_IN_FOCUSED_WINDOWActivates the keystroke when the window that the component is in has the input focusWHEN_ANCESTOR_OF_FOCUSED_COMPONENTActivates the keystroke when pressed in the component or a container of the componentUNDEFINED_CONDITIONFor when no condition is defined


KeyStroke.getKeyStroke("F2")

   <source lang="java">

import java.awt.KeyboardFocusManager; import java.util.HashSet; import java.util.Set; import javax.swing.JButton; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("a");
   Set set = new HashSet(component
       .getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
   set.add(KeyStroke.getKeyStroke("F2"));
   component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);
 }

}</source>





KeyStroke Sample: function key and Shift key

   <source lang="java">

import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.KeyStroke; public class KeyStrokeSampleVKF4Shift {

 public static void main(String[] a) {
   String ACTION_KEY = "theAction";
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton buttonA = new JButton("<html>
ANCESTOR
VK_F4+SHIFT_MASK");
   Action actionListener = new AbstractAction() {
     public void actionPerformed(ActionEvent actionEvent) {
       JButton source = (JButton) actionEvent.getSource();
       System.out.println(source.getText());
     }
   };
   KeyStroke shiftF4 = KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.SHIFT_MASK);
   InputMap inputMap = buttonA.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
   inputMap.put(shiftF4, ACTION_KEY);
   ActionMap actionMap = buttonA.getActionMap();
   actionMap.put(ACTION_KEY, actionListener);
   buttonA.setActionMap(actionMap);
   frame.add(buttonA);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}</source>





KeyStroke Sample: Space key

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.KeyStroke; public class KeyStrokeSampleSpace {

 public static void main(String[] a) {
   String ACTION_KEY = "theAction";
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton buttonA = new JButton("<html><center>WINDOW
" ""); Action actionListener = new AbstractAction() { public void actionPerformed(ActionEvent actionEvent) { JButton source = (JButton) actionEvent.getSource(); System.out.println(source.getText()); } }; KeyStroke space = KeyStroke.getKeyStroke(" "); InputMap inputMap = buttonA.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(space, ACTION_KEY); ActionMap actionMap = buttonA.getActionMap(); actionMap.put(ACTION_KEY, actionListener); buttonA.setActionMap(actionMap); frame.add(buttonA); frame.setSize(400, 200); frame.setVisible(true); }

}</source>





KeyStroke Sample: VKEnter

   <source lang="java">

import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.KeyStroke; public class KeyStrokeSampleVKEnter {

 public static void main(String[] a) {
   String ACTION_KEY = "theAction";
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton buttonA = new JButton("<html><center>FOCUS/RELEASE
VK_ENTER"); Action actionListener = new AbstractAction() { public void actionPerformed(ActionEvent actionEvent) { JButton source = (JButton) actionEvent.getSource(); System.out.println(source.getText()); } }; KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true); InputMap inputMap = buttonA.getInputMap(); inputMap.put(enter, ACTION_KEY); ActionMap actionMap = buttonA.getActionMap(); actionMap.put(ACTION_KEY, actionListener); buttonA.setActionMap(actionMap); frame.add(buttonA); frame.setSize(400, 200); frame.setVisible(true); }

}</source>





KeyStroke to String

   <source lang="java">

/*

* Copyright 2000,2005 wingS development team.
*
* This file is part of wingS (http://wingsframework.org).
*
* wingS is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* Please see COPYING for the complete licence.
*/

import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.KeyStroke; /**

* This source code was taken from a code example at http://javaalmanac.ru/
* and slightly altered to fit our purpose.
* @author ole
*
*/

public class KeystrokeUtil {

   public static String keyStroke2String(KeyStroke key) {
       if (key == null) return "";
       StringBuilder s = new StringBuilder(50);
       int m = key.getModifiers();
       if ((m & (InputEvent.CTRL_DOWN_MASK|InputEvent.CTRL_MASK)) != 0) {
           s.append("Ctrl+");
       }
       if ((m & (InputEvent.META_DOWN_MASK|InputEvent.META_MASK)) != 0) {
           s.append("Meta+");
       }
       if ((m & (InputEvent.ALT_DOWN_MASK|InputEvent.ALT_MASK)) != 0) {
           s.append("Alt+");
       }
       if ((m & (InputEvent.SHIFT_DOWN_MASK|InputEvent.SHIFT_MASK)) != 0) {
           s.append("Shift+");
       }
       if ((m & (InputEvent.BUTTON1_DOWN_MASK|InputEvent.BUTTON1_MASK)) != 0) {
           s.append("Button1+");
       }
       if ((m & (InputEvent.BUTTON2_DOWN_MASK|InputEvent.BUTTON2_MASK)) != 0) {
           s.append("Button2+");
       }
       if ((m & (InputEvent.BUTTON3_DOWN_MASK|InputEvent.BUTTON3_MASK)) != 0) {
           s.append("Button3+");
       }
       switch (key.getKeyEventType()) {
       case KeyEvent.KEY_TYPED:
           s.append(key.getKeyChar() + " ");
           break;
       case KeyEvent.KEY_PRESSED:
       case KeyEvent.KEY_RELEASED:
           s.append(getKeyText(key.getKeyCode()) + " ");
           break;
       default:
           s.append("unknown-event-type ");
           break;
       }
       return s.toString();
   }
   public static String getKeyText(int keyCode) {
       if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 ||
           keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z) {
           return String.valueOf((char)keyCode);
       }
       switch(keyCode) {
         case KeyEvent.VK_COMMA: return "COMMA";
         case KeyEvent.VK_PERIOD: return "PERIOD";
         case KeyEvent.VK_SLASH: return "SLASH";
         case KeyEvent.VK_SEMICOLON: return "SEMICOLON";
         case KeyEvent.VK_EQUALS: return "EQUALS";
         case KeyEvent.VK_OPEN_BRACKET: return "OPEN_BRACKET";
         case KeyEvent.VK_BACK_SLASH: return "BACK_SLASH";
         case KeyEvent.VK_CLOSE_BRACKET: return "CLOSE_BRACKET";
         case KeyEvent.VK_ENTER: return "ENTER";
         case KeyEvent.VK_BACK_SPACE: return "BACK_SPACE";
         case KeyEvent.VK_TAB: return "TAB";
         case KeyEvent.VK_CANCEL: return "CANCEL";
         case KeyEvent.VK_CLEAR: return "CLEAR";
         case KeyEvent.VK_SHIFT: return "SHIFT";
         case KeyEvent.VK_CONTROL: return "CONTROL";
         case KeyEvent.VK_ALT: return "ALT";
         case KeyEvent.VK_PAUSE: return "PAUSE";
         case KeyEvent.VK_CAPS_LOCK: return "CAPS_LOCK";
         case KeyEvent.VK_ESCAPE: return "ESCAPE";
         case KeyEvent.VK_SPACE: return "SPACE";
         case KeyEvent.VK_PAGE_UP: return "PAGE_UP";
         case KeyEvent.VK_PAGE_DOWN: return "PAGE_DOWN";
         case KeyEvent.VK_END: return "END";
         case KeyEvent.VK_HOME: return "HOME";
         case KeyEvent.VK_LEFT: return "LEFT";
         case KeyEvent.VK_UP: return "UP";
         case KeyEvent.VK_RIGHT: return "RIGHT";
         case KeyEvent.VK_DOWN: return "DOWN";
         // numpad numeric keys handled below
         case KeyEvent.VK_MULTIPLY: return "MULTIPLY";
         case KeyEvent.VK_ADD: return "ADD";
         case KeyEvent.VK_SEPARATOR: return "SEPARATOR";
         case KeyEvent.VK_SUBTRACT: return "SUBTRACT";
         case KeyEvent.VK_DECIMAL: return "DECIMAL";
         case KeyEvent.VK_DIVIDE: return "DIVIDE";
         case KeyEvent.VK_DELETE: return "DELETE";
         case KeyEvent.VK_NUM_LOCK: return "NUM_LOCK";
         case KeyEvent.VK_SCROLL_LOCK: return "SCROLL_LOCK";
         case KeyEvent.VK_F1: return "F1";
         case KeyEvent.VK_F2: return "F2";
         case KeyEvent.VK_F3: return "F3";
         case KeyEvent.VK_F4: return "F4";
         case KeyEvent.VK_F5: return "F5";
         case KeyEvent.VK_F6: return "F6";
         case KeyEvent.VK_F7: return "F7";
         case KeyEvent.VK_F8: return "F8";
         case KeyEvent.VK_F9: return "F9";
         case KeyEvent.VK_F10: return "F10";
         case KeyEvent.VK_F11: return "F11";
         case KeyEvent.VK_F12: return "F12";
         case KeyEvent.VK_F13: return "F13";
         case KeyEvent.VK_F14: return "F14";
         case KeyEvent.VK_F15: return "F15";
         case KeyEvent.VK_F16: return "F16";
         case KeyEvent.VK_F17: return "F17";
         case KeyEvent.VK_F18: return "F18";
         case KeyEvent.VK_F19: return "F19";
         case KeyEvent.VK_F20: return "F20";
         case KeyEvent.VK_F21: return "F21";
         case KeyEvent.VK_F22: return "F22";
         case KeyEvent.VK_F23: return "F23";
         case KeyEvent.VK_F24: return "F24";
         case KeyEvent.VK_PRINTSCREEN: return "PRINTSCREEN";
         case KeyEvent.VK_INSERT: return "INSERT";
         case KeyEvent.VK_HELP: return "HELP";
         case KeyEvent.VK_META: return "META";
         case KeyEvent.VK_BACK_QUOTE: return "BACK_QUOTE";
         case KeyEvent.VK_QUOTE: return "QUOTE";
         case KeyEvent.VK_KP_UP: return "KP_UP";
         case KeyEvent.VK_KP_DOWN: return "KP_DOWN";
         case KeyEvent.VK_KP_LEFT: return "KP_LEFT";
         case KeyEvent.VK_KP_RIGHT: return "KP_RIGHT";
         case KeyEvent.VK_DEAD_GRAVE: return "DEAD_GRAVE";
         case KeyEvent.VK_DEAD_ACUTE: return "DEAD_ACUTE";
         case KeyEvent.VK_DEAD_CIRCUMFLEX: return "DEAD_CIRCUMFLEX";
         case KeyEvent.VK_DEAD_TILDE: return "DEAD_TILDE";
         case KeyEvent.VK_DEAD_MACRON: return "DEAD_MACRON";
         case KeyEvent.VK_DEAD_BREVE: return "DEAD_BREVE";
         case KeyEvent.VK_DEAD_ABOVEDOT: return "DEAD_ABOVEDOT";
         case KeyEvent.VK_DEAD_DIAERESIS: return "DEAD_DIAERESIS";
         case KeyEvent.VK_DEAD_ABOVERING: return "DEAD_ABOVERING";
         case KeyEvent.VK_DEAD_DOUBLEACUTE: return "DEAD_DOUBLEACUTE";
         case KeyEvent.VK_DEAD_CARON: return "DEAD_CARON";
         case KeyEvent.VK_DEAD_CEDILLA: return "DEAD_CEDILLA";
         case KeyEvent.VK_DEAD_OGONEK: return "DEAD_OGONEK";
         case KeyEvent.VK_DEAD_IOTA: return "DEAD_IOTA";
         case KeyEvent.VK_DEAD_VOICED_SOUND: return "DEAD_VOICED_SOUND";
         case KeyEvent.VK_DEAD_SEMIVOICED_SOUND: return "DEAD_SEMIVOICED_SOUND";
         case KeyEvent.VK_AMPERSAND: return "AMPERSAND";
         case KeyEvent.VK_ASTERISK: return "ASTERISK";
         case KeyEvent.VK_QUOTEDBL: return "QUOTEDBL";
         case KeyEvent.VK_LESS: return "LESS";
         case KeyEvent.VK_GREATER: return "GREATER";
         case KeyEvent.VK_BRACELEFT: return "BRACELEFT";
         case KeyEvent.VK_BRACERIGHT: return "BRACERIGHT";
         case KeyEvent.VK_AT: return "AT";
         case KeyEvent.VK_COLON: return "COLON";
         case KeyEvent.VK_CIRCUMFLEX: return "CIRCUMFLEX";
         case KeyEvent.VK_DOLLAR: return "DOLLAR";
         case KeyEvent.VK_EURO_SIGN: return "EURO_SIGN";
         case KeyEvent.VK_EXCLAMATION_MARK: return "EXCLAMATION_MARK";
         case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
                  return "INVERTED_EXCLAMATION_MARK";
         case KeyEvent.VK_LEFT_PARENTHESIS: return "LEFT_PARENTHESIS";
         case KeyEvent.VK_NUMBER_SIGN: return "NUMBER_SIGN";
         case KeyEvent.VK_MINUS: return "MINUS";
         case KeyEvent.VK_PLUS: return "PLUS";
         case KeyEvent.VK_RIGHT_PARENTHESIS: return "RIGHT_PARENTHESIS";
         case KeyEvent.VK_UNDERSCORE: return "UNDERSCORE";
         case KeyEvent.VK_FINAL: return "FINAL";
         case KeyEvent.VK_CONVERT: return "CONVERT";
         case KeyEvent.VK_NONCONVERT: return "NONCONVERT";
         case KeyEvent.VK_ACCEPT: return "ACCEPT";
         case KeyEvent.VK_MODECHANGE: return "MODECHANGE";
         case KeyEvent.VK_KANA: return "KANA";
         case KeyEvent.VK_KANJI: return "KANJI";
         case KeyEvent.VK_ALPHANUMERIC: return "ALPHANUMERIC";
         case KeyEvent.VK_KATAKANA: return "KATAKANA";
         case KeyEvent.VK_HIRAGANA: return "HIRAGANA";
         case KeyEvent.VK_FULL_WIDTH: return "FULL_WIDTH";
         case KeyEvent.VK_HALF_WIDTH: return "HALF_WIDTH";
         case KeyEvent.VK_ROMAN_CHARACTERS: return "ROMAN_CHARACTERS";
         case KeyEvent.VK_ALL_CANDIDATES: return "ALL_CANDIDATES";
         case KeyEvent.VK_PREVIOUS_CANDIDATE: return "PREVIOUS_CANDIDATE";
         case KeyEvent.VK_CODE_INPUT: return "CODE_INPUT";
         case KeyEvent.VK_JAPANESE_KATAKANA: return "JAPANESE_KATAKANA";
         case KeyEvent.VK_JAPANESE_HIRAGANA: return "JAPANESE_HIRAGANA";
         case KeyEvent.VK_JAPANESE_ROMAN: return "JAPANESE_ROMAN";
         case KeyEvent.VK_KANA_LOCK: return "KANA_LOCK";
         case KeyEvent.VK_INPUT_METHOD_ON_OFF: return "INPUT_METHOD_ON_OFF";
         case KeyEvent.VK_AGAIN: return "AGAIN";
         case KeyEvent.VK_UNDO: return "UNDO";
         case KeyEvent.VK_COPY: return "COPY";
         case KeyEvent.VK_PASTE: return "PASTE";
         case KeyEvent.VK_CUT: return "CUT";
         case KeyEvent.VK_FIND: return "FIND";
         case KeyEvent.VK_PROPS: return "PROPS";
         case KeyEvent.VK_STOP: return "STOP";
         case KeyEvent.VK_COMPOSE: return "COMPOSE";
         case KeyEvent.VK_ALT_GRAPH: return "ALT_GRAPH";
       }
       if (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) {
           char c = (char)(keyCode - KeyEvent.VK_NUMPAD0 + "0");
           return "NUMPAD"+c;
       }
       return "unknown(0x" + Integer.toString(keyCode, 16) + ")";
   }

}</source>





List keystrokes in the WHEN_ANCESTOR_OF_FOCUSED_COMPONENT input map of the component

   <source lang="java">

import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton();
   InputMap map = component.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
   list(map, map.keys());
   list(map, map.allKeys());
 }
 static void list(InputMap map, KeyStroke[] keys) {
   if (keys == null) {
     return;
   }
   for (int i = 0; i < keys.length; i++) {
     keyStroke2String(keys[i]);
     while (map.get(keys[i]) == null) {
       map = map.getParent();
     }
     if (map.get(keys[i]) instanceof String) {
       String actionName = (String) map.get(keys[i]);
     } else {
       Action action = (Action) map.get(keys[i]);
     }
   }
 }
 static void keyStroke2String(KeyStroke key) {
   int m = key.getModifiers();
   if ((m & (InputEvent.SHIFT_DOWN_MASK | InputEvent.SHIFT_MASK)) != 0) {
     System.out.println("shift ");
   }
   if ((m & (InputEvent.CTRL_DOWN_MASK | InputEvent.CTRL_MASK)) != 0) {
     System.out.println("ctrl ");
   }
   if ((m & (InputEvent.META_DOWN_MASK | InputEvent.META_MASK)) != 0) {
     System.out.println("meta ");
   }
   if ((m & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_MASK)) != 0) {
     System.out.println("alt ");
   }
   if ((m & (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON1_MASK)) != 0) {
     System.out.println("button1 ");
   }
   if ((m & (InputEvent.BUTTON2_DOWN_MASK | InputEvent.BUTTON2_MASK)) != 0) {
     System.out.println("button2 ");
   }
   if ((m & (InputEvent.BUTTON3_DOWN_MASK | InputEvent.BUTTON3_MASK)) != 0) {
     System.out.println("button3 ");
   }
   switch (key.getKeyEventType()) {
   case KeyEvent.KEY_TYPED:
     System.out.println("typed ");
     System.out.println(key.getKeyChar() + " ");
     break;
   case KeyEvent.KEY_PRESSED:
     System.out.println("pressed ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   case KeyEvent.KEY_RELEASED:
     System.out.println("released ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   default:
     System.out.println("unknown-event-type ");
     break;
   }
 }
 static String getKeyText(int keyCode) {
   if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 || keyCode >= KeyEvent.VK_A
       && keyCode <= KeyEvent.VK_Z) {
     return String.valueOf((char) keyCode);
   }
   switch (keyCode) {
   case KeyEvent.VK_COMMA:
     return "COMMA";
   case KeyEvent.VK_PERIOD:
     return "PERIOD";
   case KeyEvent.VK_SLASH:
     return "SLASH";
   case KeyEvent.VK_SEMICOLON:
     return "SEMICOLON";
   case KeyEvent.VK_EQUALS:
     return "EQUALS";
   case KeyEvent.VK_OPEN_BRACKET:
     return "OPEN_BRACKET";
   case KeyEvent.VK_BACK_SLASH:
     return "BACK_SLASH";
   case KeyEvent.VK_CLOSE_BRACKET:
     return "CLOSE_BRACKET";
   case KeyEvent.VK_ENTER:
     return "ENTER";
   case KeyEvent.VK_BACK_SPACE:
     return "BACK_SPACE";
   case KeyEvent.VK_TAB:
     return "TAB";
   case KeyEvent.VK_CANCEL:
     return "CANCEL";
   case KeyEvent.VK_CLEAR:
     return "CLEAR";
   case KeyEvent.VK_SHIFT:
     return "SHIFT";
   case KeyEvent.VK_CONTROL:
     return "CONTROL";
   case KeyEvent.VK_ALT:
     return "ALT";
   case KeyEvent.VK_PAUSE:
     return "PAUSE";
   case KeyEvent.VK_CAPS_LOCK:
     return "CAPS_LOCK";
   case KeyEvent.VK_ESCAPE:
     return "ESCAPE";
   case KeyEvent.VK_SPACE:
     return "SPACE";
   case KeyEvent.VK_PAGE_UP:
     return "PAGE_UP";
   case KeyEvent.VK_PAGE_DOWN:
     return "PAGE_DOWN";
   case KeyEvent.VK_END:
     return "END";
   case KeyEvent.VK_HOME:
     return "HOME";
   case KeyEvent.VK_LEFT:
     return "LEFT";
   case KeyEvent.VK_UP:
     return "UP";
   case KeyEvent.VK_RIGHT:
     return "RIGHT";
   case KeyEvent.VK_DOWN:
     return "DOWN";
   case KeyEvent.VK_MULTIPLY:
     return "MULTIPLY";
   case KeyEvent.VK_ADD:
     return "ADD";
   case KeyEvent.VK_SEPARATOR:
     return "SEPARATOR";
   case KeyEvent.VK_SUBTRACT:
     return "SUBTRACT";
   case KeyEvent.VK_DECIMAL:
     return "DECIMAL";
   case KeyEvent.VK_DIVIDE:
     return "DIVIDE";
   case KeyEvent.VK_DELETE:
     return "DELETE";
   case KeyEvent.VK_NUM_LOCK:
     return "NUM_LOCK";
   case KeyEvent.VK_SCROLL_LOCK:
     return "SCROLL_LOCK";
   case KeyEvent.VK_F1:
     return "F1";
   case KeyEvent.VK_F2:
     return "F2";
   case KeyEvent.VK_F3:
     return "F3";
   case KeyEvent.VK_F4:
     return "F4";
   case KeyEvent.VK_F5:
     return "F5";
   case KeyEvent.VK_F6:
     return "F6";
   case KeyEvent.VK_F7:
     return "F7";
   case KeyEvent.VK_F8:
     return "F8";
   case KeyEvent.VK_F9:
     return "F9";
   case KeyEvent.VK_F10:
     return "F10";
   case KeyEvent.VK_F11:
     return "F11";
   case KeyEvent.VK_F12:
     return "F12";
   case KeyEvent.VK_F13:
     return "F13";
   case KeyEvent.VK_F14:
     return "F14";
   case KeyEvent.VK_F15:
     return "F15";
   case KeyEvent.VK_F16:
     return "F16";
   case KeyEvent.VK_F17:
     return "F17";
   case KeyEvent.VK_F18:
     return "F18";
   case KeyEvent.VK_F19:
     return "F19";
   case KeyEvent.VK_F20:
     return "F20";
   case KeyEvent.VK_F21:
     return "F21";
   case KeyEvent.VK_F22:
     return "F22";
   case KeyEvent.VK_F23:
     return "F23";
   case KeyEvent.VK_F24:
     return "F24";
   case KeyEvent.VK_PRINTSCREEN:
     return "PRINTSCREEN";
   case KeyEvent.VK_INSERT:
     return "INSERT";
   case KeyEvent.VK_HELP:
     return "HELP";
   case KeyEvent.VK_META:
     return "META";
   case KeyEvent.VK_BACK_QUOTE:
     return "BACK_QUOTE";
   case KeyEvent.VK_QUOTE:
     return "QUOTE";
   case KeyEvent.VK_KP_UP:
     return "KP_UP";
   case KeyEvent.VK_KP_DOWN:
     return "KP_DOWN";
   case KeyEvent.VK_KP_LEFT:
     return "KP_LEFT";
   case KeyEvent.VK_KP_RIGHT:
     return "KP_RIGHT";
   case KeyEvent.VK_DEAD_GRAVE:
     return "DEAD_GRAVE";
   case KeyEvent.VK_DEAD_ACUTE:
     return "DEAD_ACUTE";
   case KeyEvent.VK_DEAD_CIRCUMFLEX:
     return "DEAD_CIRCUMFLEX";
   case KeyEvent.VK_DEAD_TILDE:
     return "DEAD_TILDE";
   case KeyEvent.VK_DEAD_MACRON:
     return "DEAD_MACRON";
   case KeyEvent.VK_DEAD_BREVE:
     return "DEAD_BREVE";
   case KeyEvent.VK_DEAD_ABOVEDOT:
     return "DEAD_ABOVEDOT";
   case KeyEvent.VK_DEAD_DIAERESIS:
     return "DEAD_DIAERESIS";
   case KeyEvent.VK_DEAD_ABOVERING:
     return "DEAD_ABOVERING";
   case KeyEvent.VK_DEAD_DOUBLEACUTE:
     return "DEAD_DOUBLEACUTE";
   case KeyEvent.VK_DEAD_CARON:
     return "DEAD_CARON";
   case KeyEvent.VK_DEAD_CEDILLA:
     return "DEAD_CEDILLA";
   case KeyEvent.VK_DEAD_OGONEK:
     return "DEAD_OGONEK";
   case KeyEvent.VK_DEAD_IOTA:
     return "DEAD_IOTA";
   case KeyEvent.VK_DEAD_VOICED_SOUND:
     return "DEAD_VOICED_SOUND";
   case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
     return "DEAD_SEMIVOICED_SOUND";
   case KeyEvent.VK_AMPERSAND:
     return "AMPERSAND";
   case KeyEvent.VK_ASTERISK:
     return "ASTERISK";
   case KeyEvent.VK_QUOTEDBL:
     return "QUOTEDBL";
   case KeyEvent.VK_LESS:
     return "LESS";
   case KeyEvent.VK_GREATER:
     return "GREATER";
   case KeyEvent.VK_BRACELEFT:
     return "BRACELEFT";
   case KeyEvent.VK_BRACERIGHT:
     return "BRACERIGHT";
   case KeyEvent.VK_AT:
     return "AT";
   case KeyEvent.VK_COLON:
     return "COLON";
   case KeyEvent.VK_CIRCUMFLEX:
     return "CIRCUMFLEX";
   case KeyEvent.VK_DOLLAR:
     return "DOLLAR";
   case KeyEvent.VK_EURO_SIGN:
     return "EURO_SIGN";
   case KeyEvent.VK_EXCLAMATION_MARK:
     return "EXCLAMATION_MARK";
   case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
     return "INVERTED_EXCLAMATION_MARK";
   case KeyEvent.VK_LEFT_PARENTHESIS:
     return "LEFT_PARENTHESIS";
   case KeyEvent.VK_NUMBER_SIGN:
     return "NUMBER_SIGN";
   case KeyEvent.VK_MINUS:
     return "MINUS";
   case KeyEvent.VK_PLUS:
     return "PLUS";
   case KeyEvent.VK_RIGHT_PARENTHESIS:
     return "RIGHT_PARENTHESIS";
   case KeyEvent.VK_UNDERSCORE:
     return "UNDERSCORE";
   case KeyEvent.VK_FINAL:
     return "FINAL";
   case KeyEvent.VK_CONVERT:
     return "CONVERT";
   case KeyEvent.VK_NONCONVERT:
     return "NONCONVERT";
   case KeyEvent.VK_ACCEPT:
     return "ACCEPT";
   case KeyEvent.VK_MODECHANGE:
     return "MODECHANGE";
   case KeyEvent.VK_KANA:
     return "KANA";
   case KeyEvent.VK_KANJI:
     return "KANJI";
   case KeyEvent.VK_ALPHANUMERIC:
     return "ALPHANUMERIC";
   case KeyEvent.VK_KATAKANA:
     return "KATAKANA";
   case KeyEvent.VK_HIRAGANA:
     return "HIRAGANA";
   case KeyEvent.VK_FULL_WIDTH:
     return "FULL_WIDTH";
   case KeyEvent.VK_HALF_WIDTH:
     return "HALF_WIDTH";
   case KeyEvent.VK_ROMAN_CHARACTERS:
     return "ROMAN_CHARACTERS";
   case KeyEvent.VK_ALL_CANDIDATES:
     return "ALL_CANDIDATES";
   case KeyEvent.VK_PREVIOUS_CANDIDATE:
     return "PREVIOUS_CANDIDATE";
   case KeyEvent.VK_CODE_INPUT:
     return "CODE_INPUT";
   case KeyEvent.VK_JAPANESE_KATAKANA:
     return "JAPANESE_KATAKANA";
   case KeyEvent.VK_JAPANESE_HIRAGANA:
     return "JAPANESE_HIRAGANA";
   case KeyEvent.VK_JAPANESE_ROMAN:
     return "JAPANESE_ROMAN";
   case KeyEvent.VK_KANA_LOCK:
     return "KANA_LOCK";
   case KeyEvent.VK_INPUT_METHOD_ON_OFF:
     return "INPUT_METHOD_ON_OFF";
   case KeyEvent.VK_AGAIN:
     return "AGAIN";
   case KeyEvent.VK_UNDO:
     return "UNDO";
   case KeyEvent.VK_COPY:
     return "COPY";
   case KeyEvent.VK_PASTE:
     return "PASTE";
   case KeyEvent.VK_CUT:
     return "CUT";
   case KeyEvent.VK_FIND:
     return "FIND";
   case KeyEvent.VK_PROPS:
     return "PROPS";
   case KeyEvent.VK_STOP:
     return "STOP";
   case KeyEvent.VK_COMPOSE:
     return "COMPOSE";
   case KeyEvent.VK_ALT_GRAPH:
     return "ALT_GRAPH";
   }
   if (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) {
     char c = (char) (keyCode - KeyEvent.VK_NUMPAD0 + "0");
     return "NUMPAD" + c;
   }
   return "unknown(0x" + Integer.toString(keyCode, 16) + ")";
 }

}</source>





List keystrokes in the WHEN_IN_FOCUSED_WINDOW input map of the component

   <source lang="java">

import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("button");
   InputMap map = component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
   list(map, map.keys());
   list(map, map.allKeys());
 }
 static void list(InputMap map, KeyStroke[] keys) {
   if (keys == null) {
     return;
   }
   for (int i = 0; i < keys.length; i++) {
     keyStroke2String(keys[i]);
     while (map.get(keys[i]) == null) {
       map = map.getParent();
     }
     if (map.get(keys[i]) instanceof String) {
       String actionName = (String) map.get(keys[i]);
     } else {
       Action action = (Action) map.get(keys[i]);
     }
   }
 }
 static void keyStroke2String(KeyStroke key) {
   int m = key.getModifiers();
   if ((m & (InputEvent.SHIFT_DOWN_MASK | InputEvent.SHIFT_MASK)) != 0) {
     System.out.println("shift ");
   }
   if ((m & (InputEvent.CTRL_DOWN_MASK | InputEvent.CTRL_MASK)) != 0) {
     System.out.println("ctrl ");
   }
   if ((m & (InputEvent.META_DOWN_MASK | InputEvent.META_MASK)) != 0) {
     System.out.println("meta ");
   }
   if ((m & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_MASK)) != 0) {
     System.out.println("alt ");
   }
   if ((m & (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON1_MASK)) != 0) {
     System.out.println("button1 ");
   }
   if ((m & (InputEvent.BUTTON2_DOWN_MASK | InputEvent.BUTTON2_MASK)) != 0) {
     System.out.println("button2 ");
   }
   if ((m & (InputEvent.BUTTON3_DOWN_MASK | InputEvent.BUTTON3_MASK)) != 0) {
     System.out.println("button3 ");
   }
   switch (key.getKeyEventType()) {
   case KeyEvent.KEY_TYPED:
     System.out.println("typed ");
     System.out.println(key.getKeyChar() + " ");
     break;
   case KeyEvent.KEY_PRESSED:
     System.out.println("pressed ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   case KeyEvent.KEY_RELEASED:
     System.out.println("released ");
     System.out.println(getKeyText(key.getKeyCode()) + " ");
     break;
   default:
     System.out.println("unknown-event-type ");
     break;
   }
 }
 static String getKeyText(int keyCode) {
   if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 || keyCode >= KeyEvent.VK_A
       && keyCode <= KeyEvent.VK_Z) {
     return String.valueOf((char) keyCode);
   }
   switch (keyCode) {
   case KeyEvent.VK_COMMA:
     return "COMMA";
   case KeyEvent.VK_PERIOD:
     return "PERIOD";
   case KeyEvent.VK_SLASH:
     return "SLASH";
   case KeyEvent.VK_SEMICOLON:
     return "SEMICOLON";
   case KeyEvent.VK_EQUALS:
     return "EQUALS";
   case KeyEvent.VK_OPEN_BRACKET:
     return "OPEN_BRACKET";
   case KeyEvent.VK_BACK_SLASH:
     return "BACK_SLASH";
   case KeyEvent.VK_CLOSE_BRACKET:
     return "CLOSE_BRACKET";
   case KeyEvent.VK_ENTER:
     return "ENTER";
   case KeyEvent.VK_BACK_SPACE:
     return "BACK_SPACE";
   case KeyEvent.VK_TAB:
     return "TAB";
   case KeyEvent.VK_CANCEL:
     return "CANCEL";
   case KeyEvent.VK_CLEAR:
     return "CLEAR";
   case KeyEvent.VK_SHIFT:
     return "SHIFT";
   case KeyEvent.VK_CONTROL:
     return "CONTROL";
   case KeyEvent.VK_ALT:
     return "ALT";
   case KeyEvent.VK_PAUSE:
     return "PAUSE";
   case KeyEvent.VK_CAPS_LOCK:
     return "CAPS_LOCK";
   case KeyEvent.VK_ESCAPE:
     return "ESCAPE";
   case KeyEvent.VK_SPACE:
     return "SPACE";
   case KeyEvent.VK_PAGE_UP:
     return "PAGE_UP";
   case KeyEvent.VK_PAGE_DOWN:
     return "PAGE_DOWN";
   case KeyEvent.VK_END:
     return "END";
   case KeyEvent.VK_HOME:
     return "HOME";
   case KeyEvent.VK_LEFT:
     return "LEFT";
   case KeyEvent.VK_UP:
     return "UP";
   case KeyEvent.VK_RIGHT:
     return "RIGHT";
   case KeyEvent.VK_DOWN:
     return "DOWN";
   case KeyEvent.VK_MULTIPLY:
     return "MULTIPLY";
   case KeyEvent.VK_ADD:
     return "ADD";
   case KeyEvent.VK_SEPARATOR:
     return "SEPARATOR";
   case KeyEvent.VK_SUBTRACT:
     return "SUBTRACT";
   case KeyEvent.VK_DECIMAL:
     return "DECIMAL";
   case KeyEvent.VK_DIVIDE:
     return "DIVIDE";
   case KeyEvent.VK_DELETE:
     return "DELETE";
   case KeyEvent.VK_NUM_LOCK:
     return "NUM_LOCK";
   case KeyEvent.VK_SCROLL_LOCK:
     return "SCROLL_LOCK";
   case KeyEvent.VK_F1:
     return "F1";
   case KeyEvent.VK_F2:
     return "F2";
   case KeyEvent.VK_F3:
     return "F3";
   case KeyEvent.VK_F4:
     return "F4";
   case KeyEvent.VK_F5:
     return "F5";
   case KeyEvent.VK_F6:
     return "F6";
   case KeyEvent.VK_F7:
     return "F7";
   case KeyEvent.VK_F8:
     return "F8";
   case KeyEvent.VK_F9:
     return "F9";
   case KeyEvent.VK_F10:
     return "F10";
   case KeyEvent.VK_F11:
     return "F11";
   case KeyEvent.VK_F12:
     return "F12";
   case KeyEvent.VK_F13:
     return "F13";
   case KeyEvent.VK_F14:
     return "F14";
   case KeyEvent.VK_F15:
     return "F15";
   case KeyEvent.VK_F16:
     return "F16";
   case KeyEvent.VK_F17:
     return "F17";
   case KeyEvent.VK_F18:
     return "F18";
   case KeyEvent.VK_F19:
     return "F19";
   case KeyEvent.VK_F20:
     return "F20";
   case KeyEvent.VK_F21:
     return "F21";
   case KeyEvent.VK_F22:
     return "F22";
   case KeyEvent.VK_F23:
     return "F23";
   case KeyEvent.VK_F24:
     return "F24";
   case KeyEvent.VK_PRINTSCREEN:
     return "PRINTSCREEN";
   case KeyEvent.VK_INSERT:
     return "INSERT";
   case KeyEvent.VK_HELP:
     return "HELP";
   case KeyEvent.VK_META:
     return "META";
   case KeyEvent.VK_BACK_QUOTE:
     return "BACK_QUOTE";
   case KeyEvent.VK_QUOTE:
     return "QUOTE";
   case KeyEvent.VK_KP_UP:
     return "KP_UP";
   case KeyEvent.VK_KP_DOWN:
     return "KP_DOWN";
   case KeyEvent.VK_KP_LEFT:
     return "KP_LEFT";
   case KeyEvent.VK_KP_RIGHT:
     return "KP_RIGHT";
   case KeyEvent.VK_DEAD_GRAVE:
     return "DEAD_GRAVE";
   case KeyEvent.VK_DEAD_ACUTE:
     return "DEAD_ACUTE";
   case KeyEvent.VK_DEAD_CIRCUMFLEX:
     return "DEAD_CIRCUMFLEX";
   case KeyEvent.VK_DEAD_TILDE:
     return "DEAD_TILDE";
   case KeyEvent.VK_DEAD_MACRON:
     return "DEAD_MACRON";
   case KeyEvent.VK_DEAD_BREVE:
     return "DEAD_BREVE";
   case KeyEvent.VK_DEAD_ABOVEDOT:
     return "DEAD_ABOVEDOT";
   case KeyEvent.VK_DEAD_DIAERESIS:
     return "DEAD_DIAERESIS";
   case KeyEvent.VK_DEAD_ABOVERING:
     return "DEAD_ABOVERING";
   case KeyEvent.VK_DEAD_DOUBLEACUTE:
     return "DEAD_DOUBLEACUTE";
   case KeyEvent.VK_DEAD_CARON:
     return "DEAD_CARON";
   case KeyEvent.VK_DEAD_CEDILLA:
     return "DEAD_CEDILLA";
   case KeyEvent.VK_DEAD_OGONEK:
     return "DEAD_OGONEK";
   case KeyEvent.VK_DEAD_IOTA:
     return "DEAD_IOTA";
   case KeyEvent.VK_DEAD_VOICED_SOUND:
     return "DEAD_VOICED_SOUND";
   case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
     return "DEAD_SEMIVOICED_SOUND";
   case KeyEvent.VK_AMPERSAND:
     return "AMPERSAND";
   case KeyEvent.VK_ASTERISK:
     return "ASTERISK";
   case KeyEvent.VK_QUOTEDBL:
     return "QUOTEDBL";
   case KeyEvent.VK_LESS:
     return "LESS";
   case KeyEvent.VK_GREATER:
     return "GREATER";
   case KeyEvent.VK_BRACELEFT:
     return "BRACELEFT";
   case KeyEvent.VK_BRACERIGHT:
     return "BRACERIGHT";
   case KeyEvent.VK_AT:
     return "AT";
   case KeyEvent.VK_COLON:
     return "COLON";
   case KeyEvent.VK_CIRCUMFLEX:
     return "CIRCUMFLEX";
   case KeyEvent.VK_DOLLAR:
     return "DOLLAR";
   case KeyEvent.VK_EURO_SIGN:
     return "EURO_SIGN";
   case KeyEvent.VK_EXCLAMATION_MARK:
     return "EXCLAMATION_MARK";
   case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
     return "INVERTED_EXCLAMATION_MARK";
   case KeyEvent.VK_LEFT_PARENTHESIS:
     return "LEFT_PARENTHESIS";
   case KeyEvent.VK_NUMBER_SIGN:
     return "NUMBER_SIGN";
   case KeyEvent.VK_MINUS:
     return "MINUS";
   case KeyEvent.VK_PLUS:
     return "PLUS";
   case KeyEvent.VK_RIGHT_PARENTHESIS:
     return "RIGHT_PARENTHESIS";
   case KeyEvent.VK_UNDERSCORE:
     return "UNDERSCORE";
   case KeyEvent.VK_FINAL:
     return "FINAL";
   case KeyEvent.VK_CONVERT:
     return "CONVERT";
   case KeyEvent.VK_NONCONVERT:
     return "NONCONVERT";
   case KeyEvent.VK_ACCEPT:
     return "ACCEPT";
   case KeyEvent.VK_MODECHANGE:
     return "MODECHANGE";
   case KeyEvent.VK_KANA:
     return "KANA";
   case KeyEvent.VK_KANJI:
     return "KANJI";
   case KeyEvent.VK_ALPHANUMERIC:
     return "ALPHANUMERIC";
   case KeyEvent.VK_KATAKANA:
     return "KATAKANA";
   case KeyEvent.VK_HIRAGANA:
     return "HIRAGANA";
   case KeyEvent.VK_FULL_WIDTH:
     return "FULL_WIDTH";
   case KeyEvent.VK_HALF_WIDTH:
     return "HALF_WIDTH";
   case KeyEvent.VK_ROMAN_CHARACTERS:
     return "ROMAN_CHARACTERS";
   case KeyEvent.VK_ALL_CANDIDATES:
     return "ALL_CANDIDATES";
   case KeyEvent.VK_PREVIOUS_CANDIDATE:
     return "PREVIOUS_CANDIDATE";
   case KeyEvent.VK_CODE_INPUT:
     return "CODE_INPUT";
   case KeyEvent.VK_JAPANESE_KATAKANA:
     return "JAPANESE_KATAKANA";
   case KeyEvent.VK_JAPANESE_HIRAGANA:
     return "JAPANESE_HIRAGANA";
   case KeyEvent.VK_JAPANESE_ROMAN:
     return "JAPANESE_ROMAN";
   case KeyEvent.VK_KANA_LOCK:
     return "KANA_LOCK";
   case KeyEvent.VK_INPUT_METHOD_ON_OFF:
     return "INPUT_METHOD_ON_OFF";
   case KeyEvent.VK_AGAIN:
     return "AGAIN";
   case KeyEvent.VK_UNDO:
     return "UNDO";
   case KeyEvent.VK_COPY:
     return "COPY";
   case KeyEvent.VK_PASTE:
     return "PASTE";
   case KeyEvent.VK_CUT:
     return "CUT";
   case KeyEvent.VK_FIND:
     return "FIND";
   case KeyEvent.VK_PROPS:
     return "PROPS";
   case KeyEvent.VK_STOP:
     return "STOP";
   case KeyEvent.VK_COMPOSE:
     return "COMPOSE";
   case KeyEvent.VK_ALT_GRAPH:
     return "ALT_GRAPH";
   }
   if (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) {
     char c = (char) (keyCode - KeyEvent.VK_NUMPAD0 + "0");
     return "NUMPAD" + c;
   }
   return "unknown(0x" + Integer.toString(keyCode, 16) + ")";
 }

}</source>





Override $ key

   <source lang="java">

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) {
   JTextField component = new JTextField(10);
   component.getInputMap(JComponent.WHEN_FOCUSED).put(
       KeyStroke.getKeyStroke("typed $"), "actionName");
   JFrame f = new JFrame();
   f.add(component);
   f.setSize(300, 300);
   f.setVisible(true);
 }

}</source>





Overriding - key

   <source lang="java">

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) {
   JTextField component = new JTextField(10);
   component.getInputMap(JComponent.WHEN_FOCUSED).put(
       KeyStroke.getKeyStroke("typed -"), "actionName");
   JFrame f = new JFrame();
   f.add(component);
   f.setSize(300, 300);
   f.setVisible(true);
 }

}</source>





Overriding space key

   <source lang="java">

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) {
   JTextField component = new JTextField(10);
   
   component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(new Character(" "), 0), "actionName");
   JFrame f = new JFrame();
   f.add(component);
   f.setSize(300, 300);
   f.setVisible(true);
 }

}</source>





Registering a KeyStroke

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.KeyStroke; public class KeyStrokeSample {

 public static void main(String[] a) {
   String ACTION_KEY = "theAction";
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton buttonA = new JButton("Press "control alt 7"");
   Action actionListener = new AbstractAction() {
     public void actionPerformed(ActionEvent actionEvent) {
       JButton source = (JButton) actionEvent.getSource();
       System.out.println(source.getText());
     }
   };
   KeyStroke controlAlt7 = KeyStroke.getKeyStroke("control alt 7");
   InputMap inputMap = buttonA.getInputMap();
   inputMap.put(controlAlt7, ACTION_KEY);
   ActionMap actionMap = buttonA.getActionMap();
   actionMap.put(ACTION_KEY, actionListener);
   frame.add(buttonA);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}</source>





Remove all backward focus traversal keys for the application

   <source lang="java">

import java.awt.AWTKeyStroke; import java.awt.KeyboardFocusManager; import java.util.HashSet; import java.util.Set; public class Main {

 public static void main(String[] argv) throws Exception {
   Set<AWTKeyStroke> set = new HashSet<AWTKeyStroke>();

   KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
       KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, set);
 }

}</source>





Remove all forward focus traversal keys for the application

   <source lang="java">

import java.awt.AWTKeyStroke; import java.awt.KeyboardFocusManager; import java.util.HashSet; import java.util.Set; public class Main {

 public static void main(String[] argv) throws Exception {
   Set<AWTKeyStroke> set = new HashSet<AWTKeyStroke>();
   KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
       KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);

 }

}</source>





Set<AWTKeyStroke> java.awt.Container.getFocusTraversalKeys(int id)

   <source lang="java">

import java.awt.AWTKeyStroke; import java.awt.KeyboardFocusManager; import java.util.HashSet; import java.util.Set; import javax.swing.JButton; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("a");
   Set<AWTKeyStroke> set = new HashSet<AWTKeyStroke>(component
       .getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
   set.add(KeyStroke.getKeyStroke("F2"));
   component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);
 }

}</source>