此代码的工作很适合我,使键绑定更舒适,通过调用诸如那些遵循:如何在密钥绑定中使用密钥名称?
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);
的关键是什么名字的目的是什么?我是否应该在程序中的某个地方使用它,而不是定义键绑定?
为什么我们关心问题是否被编辑?只要改变你的问题。你不需要做出更大胆的改变。 –