Here you can find the source of attachAccelerator(Action action, JFrame frame)
public static void attachAccelerator(Action action, JFrame frame)
//package com.java2s; /*// w w w. j a v a2s . c o m * Copyright 2011, 2012 Delving BV * * Licensed under the EUPL, Version 1.0 or? as soon they * will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * you may not use this work except in compliance with the * Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in * writing, software distributed under the Licence is * distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the Licence for the specific language governing * permissions and limitations under the Licence. */ import javax.swing.*; import java.awt.event.KeyEvent; public class Main { public static void attachAccelerator(Action action, JFrame frame) { KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY); String name = (String) action.getValue(Action.NAME); JComponent component = (JComponent) frame.getContentPane(); component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke, name); component.getActionMap().put(name, action); addStrokeToName(action); } public static void attachAccelerator(Action action, JComponent component) { KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY); String name = (String) action.getValue(Action.NAME); component.getInputMap(JComponent.WHEN_FOCUSED).put(stroke, name); component.getActionMap().put(name, action); addStrokeToName(action); } public static void addStrokeToName(Action action) { KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY); if (stroke == null) return; String name = String.format("%s%s - %s", KeyEvent.getKeyModifiersText(stroke.getModifiers()), KeyEvent.getKeyText(stroke.getKeyCode()), action.getValue(Action.NAME)); action.putValue(Action.NAME, name); } }