1. 程式人生 > >e856. 列出一個組件的所有事件

e856. 列出一個組件的所有事件

keymap resolv text wing one eof span default ++

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(); } }

Related Examples

e856. 列出一個組件的所有事件