【发布时间】:2012-05-29 17:50:30
【问题描述】:
我有一个多标签框架,我必须为不同标签下的某些按钮设置快捷方式,但它们必须使用相同的键。 例如:
在 tab1 下,我有一个“Do that”按钮,它应该对 F1 键做出反应, 但如果我要切换到 tab2,我应该有一个“执行此操作”按钮 这也应该对 F1 按钮做出反应,但 tab1 上的操作不应该 被解雇。
我尝试将keylistener 添加到选项卡/键/面板,但如果我按 F1 键,它仍然是第一个触发的操作。
但我认为原因是我使用了一个开关,它控制关键事件,例如case KeyEvent.VK_F1:mybutton1.doclick();
那么我如何在不同的选项卡下分离动作以分别做出反应?有没有办法获得焦点标签或其他东西?
问候。
编辑:Swing 动作的一些代码:
private class SwingAction extends AbstractAction {
public SwingAction() {
putValue(NAME, "mybutton");
putValue(SHORT_DESCRIPTION, "Some short description");
}
public void actionPerformed(ActionEvent e) {
mybutton.getInputMap().put(KeyStroke.getKeyStroke("F1"),"pressed");
mybutton.getActionMap().put("pressed",mybutton.doClick());
}
}
我明白了:
ActionMap 类型中的 put(Object, Action) 方法不适用 对于参数(字符串,无效) 错误,(抱歉这里是 Java/Swing 新手)
【问题讨论】:
标签: java swing jbutton key-bindings keylistener