Wenn ich z. B. einen MouseListener an einen JButton hänge, dann bekommt die Listener-Methode ein Objekt MouseEvent. Der MouseEvent liefert das verursachende bzw. registrierende Objekt mit und ich kann es mir dort wieder holen. Wenn ich es dann mit einer anderen Instanz des Objekts vergleiche, kann ich entscheiden, ob z. B. von zwei Buttons Button 1 oder 2 angeklickt worden ist. Soweit so gut.
Nehmen wir nun mal an, ich habe eine Ausgabe von Inhalt in einer Datenbank und erzeuge für jede Zeile einen Button "Delete". Mit Klick darauf soll die betreffende Zeile aus der Datenbank gekillt werden. Nur wie ermittle ich jetzt in der mouseClicked-Methode, welcher Button geklickt worden ist? Ich kann dort ja nur mit einem Objekt vergleichen oder mir den Text des Buttons geben lassen, der aber immer "Delete" und mithin nicht aussagekräftig ist. Mein Ansatz wäre nun, die Button-Objekte in einer HashMap bestehend aus Primärschlüssel des Eintrags => JButton zu speichern, den zu durchlaufen, auf das Objekt zu vergleichen und dann den Key bei einem Treffer als Löschkriterium zu verwenden - irgendwie brutal (ok, es wird eine Methode geben, Java das entsprechende Objekt suchen zu lassen)
Von wxWidgets mit Python meine ich mich zu erinnern, dass man dort einem Button u. ä. noch eine Id mitgeben konnte, die man dementsprechend später abrufen konnte, also new JButton(3, "Delete") und dann evt.getId(). Bevor ich hier existierendes Zeugs nachprogrammiere - gibt es das auch bei Java/Swing und ich habe es nur übersehen? Oder kann mein Ansatz verbessert werden?
Nehmen wir nun mal an, ich habe eine Ausgabe von Inhalt in einer Datenbank und erzeuge für jede Zeile einen Button "Delete". Mit Klick darauf soll die betreffende Zeile aus der Datenbank gekillt werden. Nur wie ermittle ich jetzt in der mouseClicked-Methode, welcher Button geklickt worden ist? Ich kann dort ja nur mit einem Objekt vergleichen oder mir den Text des Buttons geben lassen, der aber immer "Delete" und mithin nicht aussagekräftig ist. Mein Ansatz wäre nun, die Button-Objekte in einer HashMap bestehend aus Primärschlüssel des Eintrags => JButton zu speichern, den zu durchlaufen, auf das Objekt zu vergleichen und dann den Key bei einem Treffer als Löschkriterium zu verwenden - irgendwie brutal (ok, es wird eine Methode geben, Java das entsprechende Objekt suchen zu lassen)
Von wxWidgets mit Python meine ich mich zu erinnern, dass man dort einem Button u. ä. noch eine Id mitgeben konnte, die man dementsprechend später abrufen konnte, also new JButton(3, "Delete") und dann evt.getId(). Bevor ich hier existierendes Zeugs nachprogrammiere - gibt es das auch bei Java/Swing und ich habe es nur übersehen? Oder kann mein Ansatz verbessert werden?