Ich habe ein Formular mit Swing in Java erstellt. In der Form habe ich ein Textfeld verwendet, auf dem ich den Fokus einstellen muss, wenn ich die Taste drücke.Wie setzt man den Fokus auf eine bestimmte Komponente in Java?Wie legen Sie einen Fokus auf Textfield in Swing?
Antwort
Würde Component.requestFocus()
Ihnen geben, was Sie brauchen?
Danke, lass mich sehen, ob es für mich funktioniert oder nicht –
Nahm mich fünf Minuten, um es zu finden ... so viel für "einfache" Suche :-(- Ah ja, die Java-API-Dokumente sind kein Vorbild der Klarheit sowieso :-) – Joey
FYI, die [Javadocs für JComponent] (http://docs.oracle.com/javase/7/docs/api/index.html) sagen von 'requestFocus()', "Gebrauch von diesem Methode wird abgeraten, weil das Verhalten plattformabhängig ist Wir empfehlen die Verwendung von [requestFocusInWindow()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow()). Weitere Informationen zum Fokus finden Sie unter [Verwenden des Fokus-Subsystems] (http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html), einem Abschnitt im Java-Lernprogramm . " –
Nun, da wir die API durchsucht haben, müssen wir nur noch die API lesen.
Nach der API-Dokumentation:
"Weil der Fokus Verhalten dieser Methode ist plattformabhängig sind Entwickler stark gefördert Verwendung requestFocusInWindow wenn möglich."
Dies würde funktionieren ..
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Component.requestFocus();
}
});
Beachten Sie, dass alle oben genannten Gründe in einem JOptionPane fehlschlagen. Nach viel Versuch und Irrtum (mehr als die oben angegebenen 5 Minuten, sowieso), ist hier, was schließlich arbeitete:
final JTextField usernameField = new JTextField();
// ...
usernameField.addAncestorListener(new RequestFocusListener());
JOptionPane.showOptionDialog(this, panel, "Credentials", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
public class RequestFocusListener implements AncestorListener {
@Override
public void ancestorAdded(final AncestorEvent e) {
final AncestorListener al = this;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JComponent component = e.getComponent();
component.requestFocusInWindow();
component.removeAncestorListener(al);
}
});
}
@Override
public void ancestorMoved(final AncestorEvent e) {
}
@Override
public void ancestorRemoved(final AncestorEvent e) {
}
}
Vielen Dank für diese Lösung. Dies ist der einzige Weg es funktionierte .. – MyPasswordIsLasercats
Sie können JComponent.grabFocus();
auch ist es die gleichen
Javadoc für [JComponent.grabFocus()] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#grabFocus--) gibt explizit an, dass diese Methode sollte wird nicht vom Client-Code verwendet und schlägt vor, die Methode 'requestFocusInWindow()' zu verwenden, die bereits in anderen Antworten erwähnt wird. –
- 1. Wie TextField Design mit Swing
- 2. AS3: TextField Fokus
- 3. iPhone: Deaktivieren anderer Elemente auf TextField Fokus
- 4. Vermeiden Sie TextField get Fokus - Android
- 5. Warum gibt JFXPanel den Fokus auf TextField an?
- 6. Fokus von TextField entfernen JavaFX
- 7. Legen Sie alle Divs nicht Fokus zulassen
- 8. Wie setze ich Fokus und Auswahl auf ein TextField?
- 9. Wie legen Sie den Fokus eines TinyMCE-TextArea-Elements fest?
- 10. So legen Sie den Fokus auf ein SWT-Tabellenelement fest
- 11. Wie legen Sie einen Standardwert für ein WTForms SelectField fest?
- 12. Legen Sie einen Optionswert wie ausgewählt
- 13. Setzen Sie den Fokus auf PropertySheet Elementknoten in ControlsFX
- 14. So legen Sie fest, welches Steuerelement den Fokus hat Anwendungsstart
- 15. Wie man einen bestimmten Text in einem TextArea in Swing
- 16. Legen Sie einen Seitentitel in Schienen
- 17. Handhabung Swing-Fokus-Ereignisse mit Jython
- 18. Wie legen Sie den Fokus automatisch auf ein Textfeld fest, wenn eine Webseite geladen wird?
- 19. Verwenden von MSHTML Wie legen Sie den Fokus auf ein Eingabefeld fest?
- 20. Wie legen Sie einen langen Java-Klassenpfad in Windows fest?
- 21. Wie legen Sie einen E-Mail-Betreff in UIActivityViewController fest?
- 22. Wie erhalten Sie Länge von Text in einem Mojo TextField?
- 23. So legen Sie nach dem Löschen in jqgrid den Fokus auf das Raster fest
- 24. Wie setze ich ein Bild auf einen Klick in Swing?
- 25. Wie legen Sie einen Verzeichnispfad in WIX mit CustomAction fest?
- 26. Wie Task auf javaFX TextField bei onfocus und outfocus ausführen?
- 27. So legen Sie ein Steuerelement auf einen transparenten Hintergrund fest
- 28. Wie legen Sie einen booleschen Standardwert in Ruby fest?
- 29. Legen Sie einen CSS3-Übergang auf keine fest
- 30. Wie erkennen Sie Swing-Thread-Richtlinienverletzungen
10 Fragen, von denen keine Antworten akzeptiert ... –