这是我的JButton,"我可以显示完整的代码",
JButton cor =new JButton();
cor.setText("Coor");
mainframe.add(cor);
window.getContentPane().add(mainframe);
window.pack();
window.setVisible(true);
我需要帮助,如何使用键盘激活这个按钮,例如按"CTRL+A"
我已经红了一些网站,发现我必须使用"密钥绑定",但仍然可以了解如何做到这一点。
请不要说这个主题重复,因为以前的主题对我没有帮助。
cor.getInputMap().put(KeyStroke.getKeyStroke("F2"),"act");
Action act = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int xC = (int) b.getX();
int yC = (int) b.getY();
textArea.replaceSelection("X-Coordinates:" + xC + " Y-Coordinates: " + yC + "n");
}
};
您只需要将一个属性更改为JButton,就可以获得一个短路径(在本例中为ALT+C)
cor.setMnemonic(KeyEvent.VK_C);
您的代码将如下所示:
JButton cor =new JButton();
cor.setText("Coor");
cor.setMnemonic(KeyEvent.VK_C);
mainframe.add(cor);
window.getContentPane().add(mainframe);
window.pack();
window.setVisible(true);
你还会得到一个额外的,按钮名称中的字母"C"下划线,向用户显示帮助。
我不确定这是否是您问题的原因,但从您的示例中,我看到在getInputMap
中,您将键与操作名称链接,但您忘记使用getActionMap
将操作名称与实际操作对象(如)链接
cor.getActionMap().put("act", act);
此外,要装箱Ctrl+A,您可以使用
cor.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke('A',InputEvent.CTRL_DOWN_MASK), "act");