KeyEvents in anonymen AbstractActions?

membersound

Bekanntes Mitglied
Hallo,

ich habe mir solche AbstracActions gebaut. Jetzt möchte ich aber noch eine KeyEvents zu diesen binden.

Java:
modifyButton = new javax.swing.JButton();
modifyButton.setAction(getModifyButton());


   private final Action modifyButtonLaunch = new AbstractAction() {

      public void actionPerformed(ActionEvent actionEvent) {
	//do sth
    }
};

public Action getModifyButtonLaunch() {
    return  modifyButton;
}
Klar könnte ich mir ein

Java:
modifyButton.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyPressed(java.awt.event.KeyEvent evt)
//...

zusammenbasteln. Aber kann ich nicht irgendwie (ohne den Listener) innerhalb der abstrakten action methode die Hotkeys festlegen, auf den der Button reagieren soll?
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Du kannst mit putValue("mnemonic",KeyEvent.VK_irgendwas); eine mnemonic setzen.
Ansonsten (!Spekulation!) schreib dir deine eigene Klasse die von AbstractAction erbt und implementier den KeyListener.
Edit: schau mal hier: How to Use Key Bindings
 
Zuletzt bearbeitet:

membersound

Bekanntes Mitglied
Ja, das mit dem Mnemonic ist mir klar, aber was bringt es mir dieses zu setzen? Also klar den Unterstrich beim Buchstaben, aber dadurch entsteht ja noch keine Action (oder??).

Danke für den Link, das ist echt gut.
Ich habe jetzt 2 Möglichkeiten ausprobiert, welche beide funktionieren. Ist es egal welche man nimmt, oder kann man generell sagen die zweite ist eleganter?
Java:
        modifyButton.getInputMap().put(KeyStroke.getKeyStroke("M"), "enterKey");
        modifyButton.getActionMap().put("enterKey", modifyButtonLaunch);

//or

        modifyButton.registerKeyboardAction(modifyButtonLaunch, KeyStroke.getKeyStroke(
                "M"), JComponent.WHEN_FOCUSED);
 

Ähnliche Java Themen

Neue Themen


Oben