我用Java创建了一个应用程序,现在我想为所有swing组件添加键盘快捷键。
实现这一目标的最佳方法是什么?是否有任何API可供使用?
答案 0 :(得分:1)
您需要使用组件的InputMap
和ActionMap
。有关教程,check here。
输入地图(来自Javadoc):
InputMap提供输入事件(目前仅使用KeyStrokes)和Object之间的绑定。
动作地图(来自Javadoc):
ActionMap提供从对象(称为键或操作名称)到操作的映射。
所以基本上你需要将一个输入事件绑定到一个键,然后将一个键映射到一个Action上,一个Action就是"执行"你真正想要执行的是什么。
这是一个按 alt + shift + X 时生成按钮的小程序。
public class KeyBindingExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
KeyBindingExample.start();
}
});
}
private static void start() {
final JFrame frame = new JFrame("Action binding example");
final JPanel content = new JPanel();
Action myAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
JButton button = new JButton ("Hello world!");
content.add(button);
frame.pack();
}
};
content.getInputMap().put(KeyStroke.getKeyStroke("alt shift X"), "MyActionDefinition");
content.getActionMap().put("MyActionDefinition", myAction);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(content);
frame.pack();
frame.setVisible(true);
}
}