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 InputMap
s can be shared. WHEN_IN_FOCUSED_WINDOW
InputMap
s 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 |