【发布时间】:2011-07-26 01:53:49
【问题描述】:
我有一个附加到 ActionListener 的 JButton,但我还想为该按钮添加一个快捷键以更加用户友好。比如说,用户可以点击按钮,程序执行某个功能“f”,或者用户也可以按键盘上的“Enter”来执行相同的功能 f。所以这就是我的代码的要点
private JButton button;
public static void main(String[] args){
Action buttonListener = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
//Perform function f
}
};
button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ENTER"),
"test");
button.getActionMap().put("test",
buttonListener);
button.addActionListener(new OtherListener());
}
private class OtherListener implements ActionListener{
public void actionPerformed(ActionEvent e){
//Perform function f
}
}
添加一个 Action 和一个 ActionListener 来做同样的事情似乎有点乏味。也许我没有看到它,但是有没有办法减少代码,这样我就可以消除 Action 而只使用 actionListener?我正在考虑将 getActionMap().put() 方法中的 buttonListener 参数切换为,但该方法仅采用 Action 类型。
【问题讨论】:
标签: java swing event-handling