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.

pro komponente ein listener?

Empfohlene Antworten

Veröffentlicht

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:

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. :)

versteh ich nicht ... :rolleyes:

ich adde einen actionlistener ... ok ... und wie komm ich dann auf die mouse listener?

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.

hm, ok. es gibt ne getComponent() methode ... muss mal sehen was die genau zurueck liefert ...

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.

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. :(

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?

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.:)

Originally posted by Peeter


if(btn == btn01)

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

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

if(btn.equals(btn01))

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

Gruß Jaraz

ok. merci. ;)

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

[gelöscht]

Ich bin zu blöd zum editieren. :rolleyes:

DAS ist wirklich gut. :uli

Geht. Ich hab´s mal schnell getestet.

Originally posted by Jaraz

Ich bin zu blöd zum editieren. :rolleyes:

WOW, das gibt von mir noch mal ein fettes :uli von mir!:D

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

So, hier nochmal!;)

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

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

Das finde ich aber trotzdem besser. Weniger Quellcode.:rolleyes:

if(e.getSource()==btn01)

Noch weniger!!!

Gruß Jaraz

Gut, aber nun reicht´s. Man könnte natürlich die Variablen noch ein bisschen kürzen.

if(e.getSource()==b1)

:rolleyes:

So, ich glaub das Problem ist gelöst.:D

funtzt aber net. :(


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


  public void mouseClicked(MouseEvent e) {

    if ( e.getSource() == jbSubmit )

    {

      System.out.println("JUHUUUU");

    }

  }

was stimmt da net?


 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

Nimmt man da nicht für nen JButton trotzdem nen ActionListener? :confused:

Oder willst du auf einen MouseKlick was anderes machen, als per Tastendruck?

Ansonsten reicht nämlich ein normaler ActionListener auf einem Button.

Peet

hm, ok. ich brauche keinen mouselistener ...

hab auch schon alles auf actionlistener umgebaut, aber es funtzt trotzdem noch nicht.

vllt. sollte ich noch dazu sagen, dass der action listener nicht in der gleichen klasse ist, wie die buttons?!


	public void actionPerformed( ActionEvent e ) {

		JButton temp = (JButton)e.getSource();

		if ( temp.getText().equals( "Speichern" ) )

		{

			System.out.println( "JUHUUUU" );

		}

	}

so gehts.

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.