0

这是我的 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");
            }
        };
4

2 回答 2

2

您只需将一个属性更改为 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”带有下划线,向用户显示帮助。

于 2013-08-14T21:00:58.600 回答
2

我不确定这是否是您的问题的原因,但从您的示例中我看到getInputMap您正在将键与操作名称链接,但您忘记使用getActionMap将操作名称与实际操作对象链接,例如

cor.getActionMap().put("act", act);

也可以使用crate Ctrl+A

cor.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke('A',InputEvent.CTRL_DOWN_MASK), "act");
于 2013-08-14T21:04:37.250 回答