Swing Kopieren einer vollständigen Zeile einer JTable

SilencerandLois

Aktives Mitglied
Hallo,
an sich hört sich die Frage nicht schwer an. Im Normalfall wüsste ich auch, wie es klappt 🙂
Wie kann ich jedoch eine Tabellenzeile z.B mit dem KeyEvent "STRG + Y" kopieren, wenn ich gerade im Editiermodus einer JTable bin? Wo müsste ich den Listener dafür registrieren?
Aktuell kann ich nur mit der Standardfunktionalität von "STRG + C" den markierten Inhalt der zu editierenden Zelle kopieren.

Besten Dank und viele Grüße,
Martin
 
Im Normalfall wüsste ich auch, wie es klappt 🙂
Was wäre der Normalfall und wie würde es da klappen?
Wie kann ich jedoch eine Tabellenzeile z.B mit dem KeyEvent "STRG + Y" kopieren, wenn ich gerade im Editiermodus einer JTable bin? Wo müsste ich den Listener dafür registrieren?
Listener geht hier nicht, dafür bräuchte die JTable den Fokus, denn hat aber zu dem Zeitpunkt der TableCellEditor.
Die Lösung wäre das über Key Bindings zu implementieren. (so wie auch z.B. STRG+C über Key Bindings implementiert ist)
 
Was wäre der Normalfall und wie würde es da klappen?

Was der Normalfall ist, ist eine gerechtfertige Frage. Bei mir wäre folgedens der Normalfall: ich habe eine Tabelle und registriere dort eine KeyboardAction. Zum Beispiel wie folgt:
Java:
registerKeyboardAction(foo(),
            "CopyCell",
            KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK, false),
            JComponent.WHEN_FOCUSED);

Hier habe ich die Aktion auf der Tabelle registriert.
Wie ich aber nun die Keyboard-Aktion an eine Zelle hänge, welche sich im Editiermodus befindet. Das ist mir noch ein Rätsel ???:L


Danke und viele Grüße,
Martin
 
Problem gelöst!
Mit KeyBindings würde es auch funktionieren. Jedoch konnte ich durch eine kleine Modifikation meines JAVA-Codes gewünschtes erreichen:
Java:
registerKeyboardAction(foo(),
            "CopyCell",
            KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK, false),
            JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
Ich musste nur
Code:
JComponent.WHEN_FOCUSED
durch
Code:
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
ersetzen, dann klappt das gewünscht auch schon.

Viele Grüße,
Martin
 

Zurück
Oben