![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e861. Sharing an InputMap or an ActionMap Between Two ComponentsBy sharing anInputMap 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()); } } );
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 © 2002 Addison-Wesley. |