shad0w Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 versteh ich nicht ... ich adde einen actionlistener ... ok ... und wie komm ich dann auf die mouse listener? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ETnachHause Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 hm, ok. es gibt ne getComponent() methode ... muss mal sehen was die genau zurueck liefert ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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. MouseEvent.getSource liefert dir ein Object, welches du dann entsprechend casten kannst. Und darauf machst du deine Abfrage. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 ok. merci. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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 Verdammt. Natürlich hast du recht.*schäm* Aber funktionieren tut´s trozdem.:mod: Peet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 [gelöscht] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 Ich bin zu blöd zum editieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 DAS ist wirklich gut. :uli Geht. Ich hab´s mal schnell getestet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 Originally posted by Jaraz Ich bin zu blöd zum editieren. WOW, das gibt von mir noch mal ein fettes :uli von mir! if(e.getSource().equals(btn01)) So, hier nochmal! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 if(e.getSource().equals(btn01)) Das finde ich aber trotzdem besser. Weniger Quellcode. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 if(e.getSource()==btn01) Noch weniger!!! Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 Gut, aber nun reicht´s. Man könnte natürlich die Variablen noch ein bisschen kürzen. if(e.getSource()==b1) So, ich glaub das Problem ist gelöst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 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?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 public void actionPerformed( ActionEvent e ) { JButton temp = (JButton)e.getSource(); if ( temp.getText().equals( "Speichern" ) ) { System.out.println( "JUHUUUU" ); } } so gehts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.