5

这是在 JPanel 的构造函数中,但是当我按“h”时它不会打印任何内容。如果需要更多代码,我可以提供。谢谢!

String hide = "hide";
    this.getInputMap().put(KeyStroke.getKeyStroke('h'), hide);
    this.getActionMap().put(hide, new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
                System.out.println("HIDDEN");
            if (isHidden){
                slide.setVisible(true);
            }else{
                slide.setVisible(false);
            }
        }
    });
4

1 回答 1

8
this.getInputMap()....

您正在尝试将绑定添加到默认 InputMap,即当组件具有焦点时的 InputMap。默认情况下,JPanel 没有焦点。

您应该尝试使用该getInputMap(int)方法来使用其他 InputMap 之一。或者,您需要使面板具有焦点并赋予其焦点。

阅读有关如何使用键绑定的 Swing 教程,以获取有关用于指定所需 InputMap 的正确变量的更多信息。

于 2013-06-30T04:10:33.477 回答