У меня проблема с клавишами F (F1, F2 и т. Д.). Я хочу добавить действие к клавишам F, и я хочу обрабатывать все это в одном случае. Вот почему я хотел использовать метод getActionCommand, но всегда возвращает null. Однако, если я использую клавиши numpad, он работает по назначению. БлагодаряЗачем ActionEvent.getActionCommand() возвращает null?
Не работает код с помощью клавиш F: Код:
private void setKeyBindings() {
AbstractAction numberAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println(ae.getActionCommand());
}
};
InputMap inputMap = this.editButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
for (int i = 1; i < 13; i++)
{
String text = String.valueOf(i);
inputMap.put(KeyStroke.getKeyStroke("F" + text), text);
this.editButton.getActionMap().put(text, numberAction);
}
}
Рабочий код Numpad:
private void setKeyBindings() {
AbstractAction numberAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println(ae.getActionCommand());
}
};
InputMap inputMap = this.editButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
for (int i = 0; i < 10; i++)
{
String text = String.valueOf(i);
inputMap.put(KeyStroke.getKeyStroke("NUMPAD" + text), text);
this.editButton.getActionMap().put(text, numberAction);
}
}
Вот почему я предлагаю использовать повторно используемое действие, которое было засеяно значением/информацией, необходимой для каждой клавиши;) – MadProgrammer