作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码对我来说效果很好,可以通过如下调用使按键绑定(bind)更加愉快:
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);
键名的用途是什么?除了定义键绑定(bind)之外,我是否应该在程序中的某个地方使用它?
最佳答案
如果您只有一个事件监听器,则使用键名称。
通常:
setOnKeyListener(new OnKeyListener(){
void onKeyPressed(KeyEvent k){
if(k.getKey() == KeyEvent.VK_ENTER)
//Handle ENTER key
if(k.getKey() == KeyEvent.VK_ESCAPE)
//Handle ESC key
}
);
这段代码是我凭内存写的,可能不是 Java API 中的实际对象名称。
关于java - 如何在键绑定(bind)中使用键名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923873/
我是一名优秀的程序员,十分优秀!