用键盘激活JButton



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

最新更新