ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
1624
1624
EMPFEHLEN
-
15.03.10 11:07 #1WhiteLie83 Tutorials.de Gastzugang
Hallo ich hab da ein Problem.
Ich möchte einen ActionListener von zwei Stellen her erstellen. Aktuell ist der ActionListener einfach eine innere Klasse der ersten Klasse (X1).
Da ich nun aber auch in X2 den selben ActionListener nutzen möchte, weiß ich nicht ob das so noch geht:
public class X1 extends JFrame {
...
JMenuItem a = new JMenuItem(INFO);
a.addActionListener(new Y1());
...
public class Y1 implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
}
}
}
public class X2 extends JPanel {
...
JButton b = new JButton();
b.addActionListener(new Y1());
...
}
Nun kann ich aber aus Klasse X2 kein Objekt der Klasse Y1 erstellen.
Wie kann ich da drauf zugreifen, bzw. wie muss ich meine Implementierung Ändern, damit ich sowohl bei dem Button-Klick als auch bei dem Klick auf das Menü-Element, diesen ActionListerner benutzen kann?
-
15.03.10 11:12 #2
- Registriert seit
- Sep 2008
- Ort
- Osnabrück (Niedersachsen)
- Beiträge
- 244
Hallo,
mach doch aus dem ActionListener eine eigene Klasse, die du in beiden Klassen aufrufen kannst.
Grüße
-
15.03.10 11:14 #3
Du musst die innere Klasse static machen, sonst ist sie von der äußeren abhängig.
Aber wie FrankBooth sagt, schlechte Idee.Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
15.03.10 11:24 #4WhiteLie83 Tutorials.de Gastzugang
Was ist jetzt die schlechte Idee?
Das static oder die eigene Klasse?
-
15.03.10 11:33 #5
Die eigene Klasse, ich weiß nicht warum man eine innere Klasse nicht static machen sollte.
Aber sie sollten sehr selten, max. wenn du viele Instancen/prim. Variablen auf einmal übergeben willst oder einmalig eine spezielles Exception brauchst verwendet werden.
Die äußere Klasse könnte ja genauso gut das Interface implementieren, und das JMenuItem erhält den Button (oder umgekehrt, wobei ich es so logischer finde) als Parameter in addActionListener(ActionListener).
Oder beide bekommen einen eigenen Listener in der Klasse, und eins der beiden bekommt die Instanz des anderen. Wird der Listener des Zweiten ausgeführt, wird actionPerformed(arg0) der anderen Instanz aufgerufen, die dann das macht was du willst.
Ich denke, letzteres ist die beste Methode.Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
15.03.10 12:08 #6
- Registriert seit
- Sep 2008
- Ort
- Osnabrück (Niedersachsen)
- Beiträge
- 244
Hallo,
das kann man aber auch anders sehen.
Grüße
-
15.03.10 13:16 #7
Hallo zusammen,
wenn dieselbe Implementierung des Listeners in mehreren Klassen verwendet werden soll, würde ich eine eigene Listener-Klasse anlegen, die von den beiden X-Klassen instantiiert werden kann. Ich wüsste gar nicht, was hier eine statische innere Kalsse für einen Sinn machen würde.
Grüße
Vincent"Any sufficiently advanced technology is indistinguishable from magic." Arthur C. Clarke.
-
15.03.10 13:26 #8
- Registriert seit
- Sep 2008
- Ort
- Osnabrück (Niedersachsen)
- Beiträge
- 244
Damit halten es zwei für richtig und einer für eine schlechte Idee
-
15.03.10 20:30 #9
Tut mir leid, ich habe bei der Frage nicht ganz mitgedacht, ich dachte mit "die eigene Klasse" meinte er die interne. Natürlich finde ich es nicht schlecht, eine eigene Klasse zu verwenden, ich wollte nur Alternativen nennen, meine letzte fände ich halt am "logischten". Aber wie du schon sagtest, "das kann man auch anderst sehen", meiner Erfahrung nach ist es am Anfang eins der wichtigsten Dinge darauf zu achten, dass man sich mit dem Klassendesign nicht selbst verwirrt, bis man seinen eigenen Projektaufbau/Stil gefunden hat.
Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
Ähnliche Themen
-
Instanz einer Klasse in anderer Klasse verwenden
Von Lunatic im Forum PHPAntworten: 7Letzter Beitrag: 24.05.10, 14:19 -
Klasse in ActionListener aufrufen
Von neuling-00 im Forum JavaAntworten: 8Letzter Beitrag: 06.01.10, 20:55 -
[XStream] Java-Klasse/-Objket aus XML erstellen
Von Teradil im Forum JavaAntworten: 0Letzter Beitrag: 02.11.08, 20:11 -
Instanzierte Klasse in anderer Klasse daufzugreifen
Von ne0hype im Forum PHPAntworten: 4Letzter Beitrag: 10.10.07, 09:45 -
Actionlistener auf Button in anderer Klasse
Von NoGi im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 20.02.04, 21:02





Zitieren
Login





