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 にはフォーカスがありません。

メソッドを使用して、他の InputMaps のいずれかを使用してみてくださいgetInputMap(int)。または、パネルをフォーカス可能にしてフォーカスを与える必要があります。

目的の InputMap を指定するために使用する適切な変数の詳細については、キー バインドの使用方法に関する Swing チュートリアルを参照してください。

于 2013-06-30T04:10:33.477 に答える