0

注釈プログラムの一部として、画像にプロットされた最後のポイントを元に戻すコードの抜粋があります。

Action undoListener = new AbstractAction(){
    public void actionPerformed(ActionEvent actionEvent){
        System.out.println(actionEvent.getActionCommand());
        imagePanel.undoLastPoint();
    }
};
JButton undoPointButton = new JButton("Undo Last Point");
undoPointButton.addActionListener(undoListener);
KeyStroke ctrlZKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK);
JPanel thisContentPane = (JPanel)this.getContentPane();
thisContentPane.getInputMap().put(ctrlZKeyStroke, "undo");
thisContentPane.getActionMap().put("undo", undoListener);

ご覧のとおり、ユーザーはundo元に戻すボタンをクリックするか、キーボードのCtrl+を押すことでアクションをアクティブ化できます。Zこれらの各メソッドに対してアクション コマンドが返す内容を確認することに興味がありました。ボタンをクリックすると、出力は適切です。「最後のポイントを元に戻す」と表示されます。ただし、キーボード ショートカットの場合、2 進数の奇妙な 2X2 グリッドが端末に出力されます。

キーボード ショートカットによって返されるアクション コマンドを明示的に設定する方法があるかどうか疑問に思っています。2 つを区別したり、同じものを表していることを示したりするのに役立つかもしれません。

InputMapActionMap、およびの Java API を調べましたがKeyStroke、手がかりを見つけることができませんでした。おそらく問題は、私がactionCommand何のために、何のためにあるのかを完全に間違った方法で考えていることでしょうか?

4

0 に答える 0