Java swing键绑定

Yes*_*sha 5 java swing action key-bindings jpanel

这是在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);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 8

this.getInputMap()....
Run Code Online (Sandbox Code Playgroud)

您正在尝试将绑定添加到默认的InputMap,即组件具有焦点时的InputMap.默认情况下,JPanel没有焦点.您应该尝试使用该getInputMap(int)方法使用其他InputMaps之一.或者您需要使面板具有可聚焦性并使其具有焦点.

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