ShareActions

Introduction

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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.