2
我有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);
}
}
工作小键盘代码:
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