ActionListener auf JComponents

MariusMeier

Mitglied
Hallo zusammen

Ich habe folgenden Code geschrieben:
Code:
public class RComp extends JComponent {

	Image resistor = null;
    double value = 0;
    double percent = 0;

    public RComp(char vRcomp,double value,double percent,int x,int y) {

        this.value = value;
        this.percent = percent;
        
        resistor = getToolkit().getImage("D:/Work_Java/Projekt2/src/ch/fhnw/NikRCKas1/GUI/VResistor.jpg");
        this.setBounds(x,y,100,100); // 123,123 min. auf Bildgröße ändern 
    }

    public void paintComponent(Graphics g) {
         super.paintComponent(g);
         g.drawImage(resistor, 0, 0, this);
    }
}

Von der Komponente RComp instanziere ich nun ein Objekt und registriere darauf einen MouseListener().
private class Leinwand extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);

RComp res1 = new RComp('v',100,1,100,100);
RComp res2 = new RComp('h',100,1,150,150);

res1.addMouseListener(new GUIMouseListener("res1"));
res2.addMouseListener(new GUIMouseListener("res2"));

setLayout(null);
this.add(res1);
this.add(res2);

}
}

class GUIMouseListener implements MouseListener {

private String actualEvent;

public GUIMouseListener(String actualEvent) {
this.actualEvent = actualEvent;
}

public void mouseReleased(MouseEvent e) {
if(actualEvent == "res1") {
System.out.println("Res1");
}

if(actualEvent == "res2") {
System.out.println("Res2");
}
}

public void mousePressed(MouseEvent e) {


}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}
}

Das problem ist, dass wenn ich auf Bild res2 klicke erscheint die ganze Zeit in der Konsole das ich res1 angeklickt habe..... wie kann ich meine eigenen instanzierten JComponents beim EventHandling voneinander unterscheiden dass sie die richtigen Actionen ausführen?

MFG Marius Meier
 
Moin!

Deine Abfrage funktioniert nicht, weil man Strings (und Objekte allgemein) immer per "equals()" Methode vergleicht..

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Ja danke für den Hinweis. Habe die Stringvergleiche mit equals() ersetzt. Dass war jedoch nicht die Lösung für mein Problem. Habs aber rausgefunden :) meine Bilder die ich auf das Panel gezeichnet habe, waren zunahe beienander und dadurch hat sich der nicht sichtbare Teil des Bildes über das zweite Bild gelagert und dadurch immer den falschen GUIActionEvent aufgerufen.

MFG Marius Meier
 
Zurück