Festlegen des Komponentenfokus in JOptionPane.showOptionDialog ()

8

Um benutzerdefinierte Schaltflächenbeschriftungen in einem Eingabedialog zu erhalten, habe ich den folgenden Code erstellt:

%Vor%

Wie kann ich den Fokus (Cursor) in das Textfeld bewegen, während der Dialog angezeigt wird?

AKTUALISIEREN

Das geht bei mir nicht, ich meine das Textfeld hat keinen Fokus: Betriebssystem: Fedora - Gnome

%Vor%     
ehsun7b 06.06.2011, 11:58
quelle

7 Antworten

13

Dialogfokus zeigt, wie Sie den Fokus auf jede Komponente in einem Modal festlegen können Dialog.

    
camickr 06.06.2011 14:55
quelle
6
%Vor%     
Frank M. 29.01.2014 08:59
quelle
5

als letztes Argument ist null die Lösung. Zumindest hat es für mich funktioniert.

%Vor%

Aber selbst diese Lösung bringt ein anderes Problem:

Fokussierte -Komponente und Standard -Komponente unterscheiden sich. Standard-Komponente oder Standard-Schaltfläche ist die Schaltfläche, die Onclick ausgelöst wird, wenn Sie ENTER KEY drücken. Das letzte Argument definieren die Standardkomponente, die auch den Fokus erhält und die Übergabe von Null bringt das Problem, keine Standardkomponente zu haben! Ich habe es auf diese Weise für meinen Code gelöst, aber ich denke, es ist keine bewährte Methode:

%Vor%     
ehsun7b 06.06.2011 13:20
quelle
2

Ich hatte das gleiche Problem mit dem RequestFocusListener (), der unter Linux nicht funktioniert, nachdem ich die Diskussion auf Ссылка verfolgt habe Ich habe festgestellt, dass das Hinzufügen eines invokeLater es für jetzt behoben hat ...

%Vor%     
Jim Morris 14.07.2011 06:34
quelle
2

Der Trick besteht darin, (a) einen AncestorListener für die Textkomponente zu verwenden, um den Fokus anzufordern, und wenn der Fokus erneut verloren geht (vorausgesetzt, die Standardschaltfläche), fragen Sie den Fokus ein zweites Mal mit einem FocusListener nach der Textkomponente ( aber danach nicht weiter nach dem Fokus fragen):

%Vor%     
Udo Schuermann 02.04.2014 04:27
quelle
1

Versuchen Sie es

%Vor%     
mre 06.06.2011 12:44
quelle
0

Bessere Vorgehensweise: Erstellen Sie den JOptionPane mithilfe des Konstruktors, überschreiben Sie selectInitialValue, um den Fokus festzulegen, und erstellen Sie dann den Dialog mithilfe von createDialog.

%Vor%     
ceklock 18.07.2017 21:21
quelle

Tags und Links