The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.swing  [141 examples] > Keystrokes and Input Maps  [6 examples]

e861. Sharing an InputMap or an ActionMap Between Two Components

By sharing an InputMap or ActionMap, any change to the shared InputMap or ActionMap will affect all components sharing the InputMap or ActionMap. WHEN_FOCUSED and WHEN_ANCESTOR_OF_FOCUSED_COMPONENT types of InputMaps can be shared. WHEN_IN_FOCUSED_WINDOW InputMaps cannot be shared.
    // Get an InputMap from the desired type of component and initialize it
    InputMap im = new JTextArea().getInputMap(JComponent.WHEN_FOCUSED);
    im.put(KeyStroke.getKeyStroke("F2"), "actionName");
    
    // Get an ActionMap from the desired type of component and initialize it
    ActionMap am =  new JTextArea().getActionMap();
    am.put("actionName",
        new AbstractAction("actionName") {
            public void actionPerformed(ActionEvent evt) {
                process((JTextComponent)evt.getSource());
            }
        }
    );
    
    // Use the shared InputMap and ActionMap
    component1.setInputMap(JComponent.WHEN_FOCUSED, im);
    component2.setInputMap(JComponent.WHEN_FOCUSED, im);
    
    component1.setActionMap(am);
    component2.setActionMap(am);
    
    // Now, any change to the shared InputMap or ActionMap will affect both component1 and component2
    im.put(KeyStroke.getKeyStroke("F3"), "actionName2");
    am.put("actionName2",
        new AbstractAction("actionName2") {
            public void actionPerformed(ActionEvent evt) {
                process((JTextComponent)evt.getSource());
            }
        }
    );
    

 Related Examples
e858. Creating a KeyStroke and Binding It to an Action
e859. Converting a KeyStroke to a String
e860. Listing the Key Bindings in a Component
e862. Finding a Key Binding in a Component
e863. Adding an InputMap to a Component

See also: Actions    JButton    JCheckBox    JComboBox    JDesktop and JInternalFrame    JFrame, JWindow, JDialog    JLabel    JList    JProgressBar    JRadioButton    JScrollPane    JSlider    JSpinner    JSplitPane    JTabbedPane    JToolBar    Layout    Look and Feel    Menus    Progress Monitor    The Screen    Tool Tips    UI Default Values   


© 2002 Addison-Wesley.