Zum Inhalt springen

pro komponente ein listener?


shad0w

Empfohlene Beiträge

Hi,

in der buechern steht ja alles beschrieben, wie man nen mouselistener programmiert etc. und das ist eigentlich auch kein problem ...

aber: was wenn ich mehrere komponenten habe? muss ich dann fuer jeden button nen eigenen mouselistener schreiben? d.h. fuer jeden button ne eigene klasse??

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, du könntest auf die Source abfragen und den dementsprechendden Code ausführen.

z.B. Du hast mehrere Buttons und addest auf diese nur einen ActionListener. Von dem Event welches du übergibst kannst du dir die Source geben lassen und hast den entsprechenden Button. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by ETnachHause

Ich glaube er meinte auch die MouseListener.

Du schreibst einen MouseListener, addest ihn zu Deinen Komponenten und kannst dann im MouseEvent mit getSource() oder so ähnlich abfragen, von welcher Deiner Komponenten dieses Event kommt und dementsprechend handeln.

Genau DAS hatte ich gemeint. Nur als Beispiel hatte ich dann nen ActionListener genommen.:rolleyes:

MouseEvent.getSource liefert dir ein Object, welches du dann entsprechend casten kannst. Und darauf machst du deine Abfrage.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

getComponent() und getSource() ist das gleiche. ;)

Ich hab mir grad mal die Strings ausgeben lassen, jedoch kann ich keinen bezug finden, woran ich erkenne, dass ich jetzt den Submit und nicht den Cancel button geklickt habe. :(

getComponent().getName() liefert null zurueck. :(

und casten kann ich auch noch nicht. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also du hast ein EVENT e.

Dann holst du dir die Source von dem Event. (evtSource = e.getSource)

Dann überprüfst du, ob die Source überhaupt eine Instanz von Button ist.

(

if(evtSource instanceOf Button) {// hier geht´s dann weiter}

)

Dann castest du die "evtSource" in einen Button. (btnButton = (Button) evtSource))

So, und von dem kannst du dir z.B. den Text geben lassen. Darauf kannst du wieder abfragen und bekommst so deinen SubmitButton raus.

OK?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Besser ist natürlich das hier!


	JButton btn01 = new JButton("Button 01");

	JButton btn02 = new JButton("Button 02");

	JButton btn03 = new JButton("Button 03");


	btn01.addActionListener(action);

	btn02.addActionListener(action);

	btn03.addActionListener(action);



	private final AbstractAction action = new AbstractAction() {

		public void actionPerformed(ActionEvent ae) {

			JButton btn = (JButton)ae.getSource();

			if(btn == btn01)

				System.out.println("Button 01 gedrueckt.");

			else if(btn == btn02)

				System.out.println("Button 02 gedrueckt.");

			else if(btn == btn03)

				System.out.println("Button 03 gedrueckt.");

	}};





Der Rest für den MouseListener ist dann äquivalent.:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Jaraz

Kleine Bemerkung am Rande, Objekte sollte man mit .equals vergleichen.



if(btn.equals(btn01))

  System.out.println("Button 01 gedrueckt.");

Gruß Jaraz

:rolleyes: Verdammt. Natürlich hast du recht.*schäm*

Aber funktionieren tut´s trozdem.:mod:

Peet

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Peeter

if(e.getSource().equals(btn01))

Das geht aber auch mit ==, deswegen hatte ich meinen Beitrag gelöscht.

So, habe nochmal nachgeprüft. == vergleicht Referenzen.

Da bei getSource() die Referenz von dem Button geliefert wird, kann man das da doch nehmen. Mein Einwand war also falsch.

Wenn man 2 verschiedene Objekte auf inhaltliche Gleiheit überprüfen will, muss man equals nehmen.

z.B

String s1 = new String("test");

String s2 = new String("test");

s1 == s2 liefert false

s1.equals(s2) liefert true

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen


 private JButton jbSubmit = new JButton("Speichern");


 [B]jbSubmit.addMouseListener(this);[/B]


  public void mouseClicked(MouseEvent e) {

    if ( e.getSource() == jbSubmit )

    {

      System.out.println("JUHUUUU");

    }

  }

Außerdem muss die Klasse das Interface MouseListener implementieren

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...