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