2 Stimmen

JButton Tastenkombinationen

Ich habe zwei JButtons und möchte ihnen erlauben, mit den Pfeiltasten der Tastatur verwendet zu werden, wann immer das JFrame den Fokus hat.

Kann mir jemand in die richtige Richtung weisen?

3voto

justkt Punkte 14360

Geändert von Swing's Action Demo.

Die Initialisierung Ihrer Schaltfläche:

// Setzt das Mnemonic auf Abwärts, ohne Hinweis anzeigen
JButton down = new JButton(new DownAction("Abwärts", null, "Dies ist die Abwärtsschaltfläche", new Integer(KeyEvent.VK_DOWN));

Die Aktion:

class DownAction extends AbstractAction {
    public DownAction(String text, ImageIcon icon,
                  String desc, Integer mnemonic) {
        super(text, icon);
        putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
    }
    public void actionPerformed(ActionEvent e) {
        displayResult("Aktion für erste Schaltfläche/Menüelement", e);
    }
}

2voto

aioobe Punkte 397211

Um die Tasten abzufangen (ohne sich darum zu kümmern, ob das spezifische Bauteil im Fokus ist), sollte man InputMap verwenden. Lesen Sie zum Beispiel hier weiter:

http://java.sun.com/docs/books/tutorial/uiswing/misc/keybinding.html

Und verwenden Sie die Konstante WHEN_IN_FOCUSED_WINDOW.

Wenn der betreffende Knopf nicht einfach nur eine einzelne Methode aufruft, ist der beste Weg, "was auch immer der Knopf tut" zu tun:

SwingUtilities.invokeAndWait(new Runnable() {
    public void run() {
        ((AbstractButton) c).doClick();
    }
});

0voto

camickr Punkte 315810

Nun, wenn du sagst, du möchtest ihnen erlauben, die "Pfeiltasten" zu verwenden, nehme ich an, du möchtest die Fokussierung übertragen können. Wenn das der Fall ist, lies den Abschnitt im Swing-Tutorial zu Verwendung des Fokussierungssystems. Dort wird ein Beispiel dafür gegeben, wie du die Eingabetaste dafür nutzen kannst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X