Swing Änderung der Tastatur-Navigation in einer JTable

Curry

Aktives Mitglied
Ich möchte die Tastatur-Navigation in einer JTable verändern. Hier im Forum habe ich dieses Beispiel gefunden: http://www.java-forum.org/awt-swing-swt/27003-swing-eingabefelder-tabelle.html#post170994.

Das schaut schonmal sehr gut aus. Jedoch kenne ich mich bisher mit InputMaps gar nicht aus und ich bin gerade etwas verwirrt.

Gibt's eine Möglichkeit den Code der Standard-Belegung (Taste mit der korrespondierenden Aktion) zu sehen? Also z.B. "was passiert auf Ebene des Codes wenn VK_TAB oder VK_ENTER gedrückt wird?

Und gibt's es dazu ein erklärenderes Manual/Howto/Anleitung?

Ich würde das gerne so verändern, dass nach der Beendigung der Benutzereingabe mit VK_ENTER nicht der Focus auf die Spalte darunter, sondern rechts daneben gelegt wird.

Würde mich sehr über eure Hilfe freuen!
 
Gibt's eine Möglichkeit den Code der Standard-Belegung (Taste mit der korrespondierenden Aktion) zu sehen? Also z.B. "was passiert auf Ebene des Codes wenn VK_TAB oder VK_ENTER gedrückt wird?
Was verstehts Du unter Standardbelegung? Die Reaktion auf einen Tastendruck ist meist von der jeweiligen Komponente abhängig und wird - wie indem Beispiel zu sehen - über deren Input und ActionMaps definiert. Das Stichwort dazu heisst KeyBindings: How to Use Key Bindings (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)

Für die einzelnen Komponenten kann man die Tastaturbelegung über die der verschieden InputMaps
"erfragen". Für eine JTable z.B. so:
Java:
	InputMap inputMap = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
	KeyStroke[] strokes = inputMap.allKeys();
	
	for (KeyStroke stroke : strokes) {
		System.out.println(stroke.toString());
		System.out.println("\t" + inputMap.get(stroke));
	}
 
Das ist schonmal sehr hilfreich!

Gibt es eine Möglichkeit den Code für z.B. "pressed TAB" -> "selectNextColumnCell" einzusehen? Der Ausdruck "selectNextColumnCell" steht ja wahrscheinlich für einen Methodennamen.
 
"selectNextColumnCell" ist der Name der Action. Ob's da eine Methode dazu gibt weiss ich nicht.

Letztendlich wird das Aussehen und Verhalten von Komponenten durch das LaF über/gesteuert. Man könnte sich mal die TableUI Klassen anschauen. Eventuell findet man da etwas dazu.
 

Neue Themen


Zurück
Oben