Veröffentlicht 20. Mai 200322 j 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
20. Mai 200322 j 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
20. Mai 200322 j 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
20. Mai 200322 j 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
21. Mai 200322 j @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.
21. Mai 200322 j Original geschrieben von -leliel- @Jaraz: dann muesste ich doch aber die Buttons als public static deklarieren, oder? Nein. Gruß Jaraz
21. Mai 200322 j 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
21. Mai 200322 j 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
21. Mai 200322 j 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.