JTable welcher Listener ?

volkerk

Mitglied
Hallo,

Mein Name ist Volker , bin neu hier im Forum (und auch in der Java Programmierung) , mein Alter ist nicht mehr so neu.

Folgendes Problem: Ich nutze eine JTabel (DefaultModel) und frage mittels KeyListener die TastenDrücke ab. Das funktioniert auch so wie ich das will. Aber wenn ich nun in eine Zelle per Maus Reinklicke dann reagiert mein KeyListener nicht mehr. Mittels MouseListener kann ich zwar auf das klicken reagieren , will aber die Tasten abfragen. Es muss doch nun einen KeyListener geben der mit der Zelle verbunden wird, aber den finde ich trotz googeln nicht.

Vielleicht kann es mir jemand grob erklären.

Vielen Dank

Grüße Volker.
 
Hallo Thallius,

der klick mit der Maus soll keinen Tastendruck auslösen, aber nach dem Mausklick in eine Zelle wird der KeyListener (natürlich nach dem drücken einer Taste) nicht aufgerufen.

Gruß Volker.
 
Wenn Du auf Änderungen in einem JTable reagieren willst solltest Du das mit einem TableModel Listener machen
Code:
table.getModel().addTableModelListener(new TableModelListener() {
..
      public void tableChanged(TableModelEvent e) {
         System.out.println(e);
      }
..
 
Hallo,

Habe meinen fehler gefunden.

Habe nur das Ereigniss KeyPress abgefragt aber dies funktioniert nur bei den Zellen in die ich per TabTaste springe Wenn ich nun noch zusätzlich das Ereigniss KeyReleased abfrage dann geht es.

Hallo Blender3d vielen Dank für Deinen Hinweis , das schaue ich mir mal an , denn ich glaube das ist eigentlich das was ich mit dem KeyListener versucht habe zu realisieren , zur Zeit merke ich mir jede Zelle bei der etwas anderes wie Tab, Cursor oder Return gedrückt wird das sind dann ja die geänderten.

Viele Grüße Volker.
 
hallo,

wobei ich den KeyListener doch noch benötige , weil , wenn ich in der letzten Zelle binn dann soll eine neue Zeile eingfügt werden . Dies mach ich auch durch die TabTaste abfrage wenn diese in der letzten Zelle erfolgt.

Oder geht das auch etwas anders.

Gruß Volker.
 
Hallo,

im Prinzip mache ich das ja so allerdings mit
table.getSelectedRow() damit erkenne ich dann wenn ich in der letzten Zelle bin. (durch den vergleich mit RowCount das gleiche dann mit der Column)

Meine Frage war nun allerdings ob das auch anders geht , also ob es evtl eine einstellung an der Table gibt die automatisch neue Zeilen anfügt.

Eine Frage hätte ich noch : Kann ich an der Zelle (in der Table oder Modell) erkennen ob sie verändert wurde. Zur Zeit mache ich ja den "Umweg" über den TableModelListener (das war ein guter Tipp) und merke mir dann die Zeile/spalte (in einer HashMap).

Viele Grüße Volker
 

Zurück
Oben