用键盘激活JButton

时间:2013-08-14 20:32:55

标签: java swing keyboard key 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");
            }
        };

2 个答案:

答案 0 :(得分: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”,并强调按钮名称,向用户显示帮助。

答案 1 :(得分:2)

我不确定这是否是您出现问题的原因,但从您的示例中我看到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");