Ändern Sie den Fokus auf die nächste Komponente in JTable mit TAB

7

Das Standardverhalten von JTable ändert den Fokus auf die nächste Zelle und ich erzwinge, dass der Fokus bei gedrückter TAB-Taste zur nächsten Komponente (z. B. JTextField) verschoben wird.
Ich habe isCellEditable Methode von DefaultTableModel überschrieben, um immer false zurückzugeben:

%Vor%

Aber es ändert immer noch nicht den Fokus auf die nächste Komponente!
Wie sollte ich JTable den Fokus auf die nächste Komponente anstatt auf die nächste Zelle setzen?

    
RYN 28.08.2012, 07:35
quelle

4 Antworten

5

Wenn Sie das wirklich wollen, müssen Sie das Standardverhalten der Tabellenaktionskarte ändern.

%Vor%

Dann brauchen Sie ein paar Aktionen, um das Traversal zu behandeln

%Vor%

Ein anderer Ansatz wäre, die zugrunde liegende Action ... zu deaktivieren.

%Vor%

(habe das nicht getestet)

Der Vorteil dieses Ansatzes besteht darin, dass Sie das Verhalten nach Bedarf aktivieren / deaktivieren können, ohne einen Verweis auf das alte Actions

beibehalten zu müssen     
MadProgrammer 28.08.2012, 07:58
quelle
12

Die Umschalt- / Tab-Tasten werden standardmäßig verwendet, um den Fokus zwischen den Komponenten zu übertragen. JTable fordert explizit an, das Shift- / Tab intern zu behandeln (indem Sets von focusTraversalKeys bereitgestellt werden, die diese nicht enthalten).

Befolgen Sie die allgemeine Regel (, wenn für eine Aufgabe eine bestimmte API verfügbar ist, verwenden Sie diese, statt Ihre eigene zu rollen), müssen Sie die Traversalschlüssel so festlegen, dass sie wieder enthalten sind:

%Vor%     
kleopatra 28.08.2012 10:25
quelle
5
mKorbel 28.08.2012 07:57
quelle
4

Um auf die Standard-Tastaturbelegungen (normalerweise TAB und UMSCHALT + TAB) zurückzusetzen, geben Sie einfach null für den Parameter keystrokes bis Component.setFocusTraversalKeys :

an %Vor%     
Rangi Keen 20.06.2013 16:18
quelle