Listing the Actions in a Component

This example demonstrates how to list all the actions in a component.
ActionMap map = component.getActionMap(); // List actions in the component list(map, map.keys()); // List actions in the component and in all parent action maps list(map, map.allKeys()); public static void list(ActionMap map, Object[] actionKeys) { if (actionKeys == null) { return; } for (int i=0; i<actionKeys.length; i++) { // Get the action bound to this action key while (map.get(actionKeys[i]) == null) { map = map.getParent(); } Action action = (Action)map.get(actionKeys[i]); } }
A text component not only has an action map with actions, it also has keymaps with actions. Moreover, every keymap has a default action to handle any typed character key events not handled by any input map or keymap. The following code retrieves actions from these objects:
// List the actions in the keymaps if (component instanceof JTextComponent) { JTextComponent textComp = (JTextComponent)component; Keymap keymap = textComp.getKeymap(); while (keymap != null) { // Get actions in the keymap Action[] actions = keymap.getBoundActions(); for (int i=0; i<actions.length; i++) { Action action = actions[i]; } // Get the default action in the keymap Action defaultAction = keymap.getDefaultAction(); keymap = keymap.getResolveParent(); } }

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.