0

まず、私はプログラミングが初めてで、ユーザーが押すことができるキーバインドが必要な小さなアプリケーションに取り組んでいます。現在、私は仮想キーを使用しています。つまり、ALT+KEYを押す必要がありますが、 KEYPRESSを押す必要があるだけです。KeyListenerのコード。

私のボタンの現在のキーバインド:

commandsButton.setMnemonic(KeyEvent.VK_A);

私のボタンリスナー:

commandsButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            runCommand();
      }});

「 ALT + A」ではなく「 A」だけを押すことができるようにしたい

4

1 に答える 1

2

達成したい内容に応じて、キー バインディングAPI を使用できます。たとえば、...

InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "Press.A");
am.put("Press.A", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        gameConsole.append("\n\nCommands: \n ==========");
        commands();
    }
});

これの素晴らしいところは、再利用できることActionです...

例えば...

public class ConsoleAction extends AbstractAction {

    public ConsoleAction() {
        putValue(NAME, "Text of button");
        putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, 0));
        putValue(MNEMONIC_KEY, KeyEvent.VK_A);
    }

    public void actionPerformed(ActionEvent e) {
        gameConsole.append("\n\nCommands: \n ==========");
        commands();
    }
}

その後...

ConsoleAction consoleAction = new ConsoleAction();
JButton consoleButton = new JButton(consoleAction);
//...
am.put(consoleAction);
于 2013-11-07T03:43:22.817 に答える