Welchen Listener brauche ich um auf das selektieren einer Table-Row zu reagieren.

Hubivan

Mitglied
Hi

Leider hab ich noch nicht allzuviel mit GUIs gemacht weshalb ich jetzt mal einen Tipp von euch brauche um weiterzukommen.

Ich habe in meinem GUI Programm eine JTable, nun möchte ich mit einem Listener darauf reagieren, wenn in der Table eine der Einträge angeklickt wird. Welcher Listener ist dafür der richtige? Und stimmt der Nachfolgende Code soweit? (DataTable ist eine selbst implementierte Klasse für das Tablemodel)
Code:
JTable jTblKriterienGruppen = new JTable();
DataTable dTableKriterienGruppen;
dTableKriterienGruppen = new DataTable(listeKriterienGruppen);
jTblKriterienGruppen = new JTable(dTableKriterienGruppen);
dTableKriterienGruppen.addTableModelListener(

 //hier den von mir gesuchten Listener einfügen

});

Das Interface TableModelListener bietet ja nur eine Methode die auf Änderungen in der Tabelle reagiert, wenn ich das richtig sehe oder?
 
Zuletzt bearbeitet:
Was ich machen will ist,

In der GUI wird mittels einer JTable eine Liste von Gruppennamen dargestellt.
Wenn man jetzt in dieser Liste auf einen der Einträge (also Row) klickt, soll eine Aktion ausgeführt werden.

Was ich also brauche ist, einen Listener der auf das anklicken des Eintrags reagiert.
 
Dann schreib dir einen eigenen TableModelListener, oder nimm den MouseListener und ermittle bei nem Klick, ob eine Tabellenzeile ausgewählt ist und wenn ja welche.
 
MouseListener! Das könnte die Lösung sein nach der ich gesucht hab :)
Den MouseListener muss ich aber im Gegensatz zum TableModelListener nicht
an die JTable dranhängen mit nem add...( ...) usw oder?

Wie gesagt, die ganze Listener-Geschichte ist mir noch nicht ganz so verständlich.
 
Hallo,

ich verstehe nicht, was der TableModelListener hier bringen soll.

Was du machen möchtest funktioniert gut mit dem MouseListener.
Die Tabelle stellt eine Methode zur Verfügung, mit der man die Zeile an einem Punkt herausbekommen kann.
Code:
table.rowAtPoint(Point p)

Beim MouseListener kann man bei jeder Methode die Position abfragen.

Jeder Listener wird mit add hinzugefügt.

Code:
addMouseListener(MouseListener l)
addActionListener(ActionListener l)
addPropertyChangeListener(PropertyChangeListener l)

Für solche Fragen lohnt sich aber ein Blick in die API.

MFG

Sascha
 
Für solche Fragen lohnt sich aber ein Blick in die API.

MFG

Sascha

In der Regel würd ich dir da zustimmen, aber wenn man wie ich bisher kaum was mit GUI gemacht hat und nach 8 Stunden Arbeit etwas aufm Schlauch steht :) Kommt man nicht unbedingt drauf wonach man am besten in der API kuckt. Hatte mich dann am Ende total verpeilt und war etwas zu sehr auf den TableModelListener fixiert :)

Die Geschichte mit dem MouseListner funktioniert 1a :) Hab zwar wegen der vielen Methoden die man implementieren muss ne Menge ungenutzte Methodenrümpfe die einfach garnix machen, aber wenigstens eine saubere funktionierende Lösung.
Also nochmal Danke für den Schups in die richtige Richtung.
 
Dann nutz doch einfach den MouseAdapter. Da musst du dann nur noch die richtige Methode überschreiben.

MFG

Sascha
 
Zurück