In meinem Swing-Programm habe ich ein JTextField und ein JButton. Ich möchte, dass, sobald der Benutzer die "Enter" -Taste drückt, der actionListener der JButton ausgeführt wird. Wie würde ich das tun? Vielen Dank im Voraus.Wie verbinde ich mit einem Klick auf "Enter"?
Antwort
JRootPane hat eine Methode setDefaultButton (JButton-Taste), die tun wird, was Sie wollen. Wenn Ihre App ein JFrame ist, wird die RootPaneContainer-Schnittstelle implementiert. Sie können den Stammbereich abrufen, indem Sie getRootPane() auf dem JFrame aufrufen, und dann setDefaultButton im zurückgegebenen Stammbereich aufrufen. Dieselbe Technik funktioniert für JApplet, JDialog oder jede andere Klasse, die RootPaneContainer implementiert.
Funktioniert das nur, nachdem Sie die Komponente initialisiert haben, mit der Sie .getRootPane() planen? Wenn ja, würde ich das nicht direkt in den Konstruktor dieser Komponente einbauen können, ja? –
@LucasMorgan: Sie brauchen ein JRootPane, damit das funktioniert, und das macht Sinn. Andernfalls müssen Sie möglicherweise Tastenbelegungen verwenden. –
es ein Beispiel hier
http://www.java2s.com/Code/Java/Swing-JFC/SwingDefaultButton.htm
dies ist, was Sie brauchen: rootPane.setDefaultButton (button2);
Befreien Sie sich von ActionListeners. Das ist der alte Stil für Zuhörer. Absolvent der Action-Klasse. Der Trick besteht darin, die Arbeit von InputMaps und ActionMaps zu verstehen. Dies ist ein einzigartiges Merkmal der Schaukel, die wirklich sehr schön ist:
http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html
Hier ist, wie Sie es tun:
JPanel panel = new JPanel();
panel.setLayout(new TableLayout(...));
Action someAction = new AbstractAction("GO") {
public void actionPerformed() {
}
};
InputMap input = panel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
input.put(KeyStroke.getKeyStroke("enter", "submit");
panel.getActionMap().put("submit", someAction);
panel.add(button = new JButton(someAction));
panel.add(textField = new JTextField());
die WHEN_ANCESTOR_OF_FOCUSED_COMPONENT verwenden, können das Panel Tastaturereignisse von irgendetwas davon empfangen ist Kind (dh Vorfahren). Unabhängig davon, welche Komponente den Fokus hat, solange sie sich innerhalb des Panels befindet, ruft der Tastendruck alle Aktionen auf, die unter "Senden" in der ActionMap registriert sind.
Dadurch können Sie Aktionen in Menüs, Schaltflächen oder Tastenanschlägen wiederverwenden, indem Sie sie freigeben.
Key Binding ist in vielen Situationen nützlich, aber ist nicht ein bisschen Overkill für das aktuelle Problem, wenn Sie die anderen einfacheren Lösungen verwenden könnten (die wahrscheinlich Key-Bindung im Hintergrund verwenden). –
Hängt davon ab, dass der Autor nicht angegeben hat, ob dies in einem eigenen Dialog oder in der Hauptbenutzeroberfläche der Fall war. Die Verwendung von setDefaultButton() setzt voraus, dass es sich um die einzige Sache in einem Dialog handelt. Ganz zu schweigen von verständnisvollen Aktionen und ihrer Beziehung zum Rest des Swing-Toolkits führt Sie zu weiteren Themen wie Menübindungen, globalen Tastatureingaben und Anpassen von Tastaturbelegungen für Standardkomponenten. Außerdem muss jeder, der ActionListener verwendet, sich bewusst sein, dass Aktionen in allen Fällen überlegen sind. – chubbsondubs
"Jeder, der ActionListeners verwendet, muss sich bewusst sein, dass Aktionen in allen Fällen überlegen sind." - Hm, und mir wurde beigebracht, dass alle Verallgemeinerungen falsch sind. :) –
- 1. Triggering. Klick-Funktion mit Enter
- 2. Wie verbinde ich Menü-Klick mit Aktion in Qt Creator?
- 3. Wie verbinde ich mehrere Bilder mit jquery?
- 4. Wie verbinde ich mit fakes3
- 5. Wie verbinde ich() mit einem nicht blockierenden Sockel?
- 6. Wie verbinde ich mich mit einem Swift-Framework von Drittanbietern
- 7. Wie verbinde ich eine Bildlaufleiste mit einem Panel in VC++?
- 8. KonvaJS: Wie verbinde ich zwei Formen mit einem Pfeil?
- 9. Wie verbinde ich eine Paypal IPN-Bestätigung mit einem Benutzer?
- 10. Wie verbinde ich ein Java-Backend mit einem .NET-Frontend
- 11. Wie verbinde ich mich mit einem bestimmten BLE-Gerät?
- 12. Wie verbinde ich mich mit einem Browser in QTP?
- 13. Wie verbinde ich mongoDB mit einem Dateiku-Dataset?
- 14. Ruby: Wie verbinde ich Elemente eines Arrays mit einem Präfix?
- 15. Wie verbinde ich Qt-Bibliotheken mit einem Standard-C++ - Projekt?
- 16. Wie verbinde ich Schlüssel mit einem Befehl oder einer Funktion?
- 17. Wie verbinde ich AVAudioEngine mit einem Lightning Port Audio-Eingang?
- 18. Wie verbinde ich mich mit socket.io von einem WS-Client?
- 19. Wie verbinde ich ein Storyboard mit einem .h und .m
- 20. Wie verbinde ich mich mit einem bestimmten Schema in H2
- 21. Wie verbinde ich meine asp.net
- 22. Wie verbinde ich mich mit Python-Programm von einem anderen Python-Programm auf einem anderen Computer?
- 23. Wie verbinde ich eine JBoss4 Message Driven Bean mit einem Thema auf einem Remote-Server?
- 24. Wie verbinde ich ein Video?
- 25. Wie verbinde ich iOS App mit Wordpress?
- 26. Wie verbinde ich eine Hintergrundfarbe mit jquery?
- 27. Wie verbinde ich meinen ftp mit Webstorm?
- 28. Wie verbinde ich C# mit Postgres?
- 29. Wie verbinde ich HTML Divs mit Zeilen?
- 30. Wie verbinde ich mich mit AWS Elasticsearch?
getRootPane(). SetDefaultButton (JButton defaultButton); – ashubuntu