此代碼的工作很適合我,使鍵綁定更舒適,通過調用諸如那些遵循:如何在密鑰綁定中使用密鑰名稱?
import java.awt.event.ActionEvent;
import javax.swing.*;
import static javax.swing.KeyStroke.getKeyStroke;
public abstract class KeyBoundButton extends JButton{
public abstract void action(ActionEvent e);
public KeyBoundButton(String actionMapKey, int key, int mask)
{
Action myAction = new AbstractAction()
{
@Override public void actionPerformed(ActionEvent e)
{
action(e);
}
};
setAction(myAction);
getInputMap(WHEN_IN_FOCUSED_WINDOW)
.put(getKeyStroke(key, mask),actionMapKey);
getActionMap().put( actionMapKey, myAction);
}
}
電話:
button = new KeyBoundButton("WHATEVER", VK_X, CTRL_DOWN_MASK)
{
@Override
public void action(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Ctrl-X was pressed");
}
};
但我沒有線索如何使用鑰匙名稱WHATEVER
,無論是智能或其他方式,在程序中的其他地方。
我想知道button.getActionCommand()
但它返回null
,即使我在類定義中插入此行action(e)
後:
setActionCommand(actionMapKey);
的關鍵是什麼名字的目的是什麼?我是否應該在程序中的某個地方使用它,而不是定義鍵綁定?
爲什麼我們關心問題是否被編輯?只要改變你的問題。你不需要做出更大膽的改變。 –