Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Kleines Button/Listener Problem

Empfohlene Antworten

Veröffentlicht

Hi,

ich hab hier grad ein verstaendniss problem ... :(

ich hab ne hauptklasse, in der gibt es 2 'Speichern' buttons.

Und ne klasse mit nem ActionListener fuer die buttons.

Momentan hab ich das so geloest, dass ich den Text und den ToolTipText ueberpruefe ... leider hat 'n kollege die tooltips geaendert und ich ne halbe stunde gesucht, bis ich das gefunden hatte ... :(

die methode getName oder getSource liefert mir aber auch keien eindeutige identifizierung der buttons ...

wie kann man das besser realisieren??

danke

Hi!

Du könntest entweder jedem Button eine eigene Klickmethode zuweisen oder du gibts EINER Methode eine ID als Parameter mit

Beispiel:


 int butt1_ID = 1;

 butt1.addActionListener(new ActionListener() {

          public void actionPerformed(ActionEvent e) {

               MyButtonMethod(butt1_ID);

          }

 });

Wobei "MyButtonMethod" anhand der IDs eben überprüft welcher Button gedrückt wurde und für den halt seine Aktionen durchgeführt werden!

Gruß

Azrael

Also ich würde es immer mit Actions machen - dadurch entstehen zwar ein paar Klassen mehr, aber das ganze ist übersichtlicher und angenehmer.

Ciao

Christian

Original geschrieben von -leliel-

die methode getSource liefert mir aber auch keien eindeutige identifizierung der buttons

Wieso nicht? Hast du die equals Methode der Buttons überschrieben?

Die beiden Buttons sind doch unterschiedliche Objekte.

Also kannst du mit getSource().equals(button1) oder getSource().equals(button2) doch herausfinden ob der eine oder der andere Button gedrückt wurde. Unabhängig von Beschriftung, Tooltip oder was weiss ich.

Gruß Jaraz

@Jaraz: dann muesste ich doch aber die Buttons als public static deklarieren, oder?

naja, beim naechsten mal werd ich fuer jeden button nen eigenen listener schreiben. :rolleyes:

Original geschrieben von -leliel-

@Jaraz: dann muesste ich doch aber die Buttons als public static deklarieren, oder?

Nein.

Gruß Jaraz

Also normalerweise ordnet man den Buttons über die Methode setActionCommand einen eindeutigen Namen zu.

In der actionPerformed-Methode bekommt man über das ActionEvent-Objekt (Methode getActionCommand) wieder den Namen des betätigten Buttons raus - man braucht also nicht für jeden Button einen eigenen Listener...

Aber auch wenn Ihr die Button über die Texte oder Tooltips identifiziert, sollte es ohne Probleme auch nach Änderungen funktionieren. Ihr dürft nur nicht die Texte immer neu schreiben sondern entweder in Konstanten ablegen oder (viel besser) die Texte in Property-Files ablegen. Dadurch würde Eure Anwendung auch gleich internationalisiert sein....

Gruß

Snowghost

Original geschrieben von Snowghost

getActionCommand

imho brauche ich die nur, wenn sich zwischendurch das ActionCommand ändert. Wenn der Button immer das gleiche auslöst, reicht es mir, mit getSource() zu arbeiten.

Das kann natürlich jeder so halten wie er lustig ist. ;)

Gruß Jaraz

OK. getSource geht auch - aber da vergleicht man ganze Objekte miteinander.

Ich finde es etwas besser, nur einen Namen zu vergleichen - hat auch beim debuggen Vorteile...

Aber wie du sagtest - jeder, wie er es mag...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.