Я даю это для меня так же, как и для обучения, как и для всех остальных. У меня всегда были трудности с применением фрагментов кода для привязки ключей, которые я обнаружил в прошлом, и я надеюсь, что мое объяснение и код будут понятны. Спасибо @kleopatra за ее фрагмент кода, на котором я основываю свой код ниже.
(Я пользуюсь ЗАГЛАВНЫМИ БУКВАМИ, где я НЕ должен, чтобы более четко показать, что ДОЛЖНО СООТВЕТСТВОВАТЬ.)
Код связывает нажатие клавиши Ctrl-Shift-U
с кодом в actionPerformed
для MYACTION
через соответствующие строки в getInputMap
и getActionMap
.
Три экземпляра MYACTION
ниже должны совпадать, как и четыре экземпляра MYACTIONBUTTON
, как и два экземпляра строки MAKE_THESE_MATCH
. Называй их как хочешь; просто заставьте их совпадать.
Кнопка MYACTIONBUTTON
должна иметь MYACTION
в качестве аргумента для JButton
, определяющего ее, И к ней должны быть применены getInputMap
и getActionMap
.
private static JButton MYACTIONBUTTON;
private static JFrame frame;
private static JPanel panel;
...
Action MYACTION = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
// put action code here
}
};
MYACTIONBUTTON = new JButton(MYACTION);
MYACTIONBUTTON.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(getKeyStroke(VK_U, CTRL_DOWN_MASK | SHIFT_DOWN_MASK),
"MAKE_THESE_MATCH");
MYACTIONBUTTON.getActionMap().put("MAKE_THESE_MATCH", MYACTION);
panel.add(MYACTIONBUTTON);
frame.add(panel);