mausklick

Status
Nicht offen für weitere Antworten.

SBehnen27

Aktives Mitglied
keine ahnung, ob das vielleicht sogar ne anfängerfrage ist... wenn ja, bitte verschieben...

ich habe einen jPanel. in diesem JPanel zeige ich eine Grafik an.
ich habe jetzt dem jpanel einen mouselistener MouseClicked gegeben.

wie man sicherlich vermuten kann, möchte ich mein bild anklicken und damit eine aktion auslösen. Leider muss ich feststellen, dass offensichtlich das panel von der grafik überdeckt wird. Somit wird der klick auf das bild nicht wahrgenommen.
wenn ich genau neben mein bild klicke (das jpanel ist ein wenig grösser als das bild) wird der klick registriert...


was mache ich falsch, wie kann ich das besser machen?
 
:? meine kristallkugel bleibt grau :-/ komm morgen nochmal wieder oder gib mir n bisschen code
 
Roar hat gesagt.:
:? meine kristallkugel bleibt grau :-/ komm morgen nochmal wieder oder gib mir n bisschen code
Ich stimme nicht mit dir überein. Meine Kristallkugel zeigt Nebelschwaden. Ich denke er sollt Morgen wiederkommen und uns ein bisschen Code zeigen...
 
hm. wusste nich, dass code benötigt wird 😉 hatte das für nen einfaches prob gehalten ^^ sorry...

grudlage ist ein jframe. darauf liegt ein 800x600 jpanel. auf dem wiederum liegt der jpanel agg1.
auf dem jpanel agg1 liegt dann folgender:

jpanel:
Code:
agg1_1 = new javax.swing.JPanel();

der klick:
Code:
private void agg1_1MouseClicked(java.awt.event.MouseEvent evt) {
        click();
    }

funktion click:
Code:
public void click(){
        jTextArea1.setText("es wurde geklickt");
    }

hier adde ich eine grafik in mein panel:

Code:
agg1_1.add(meineHelden[1]); 
meineHelden[1].setBounds(0,0,52,66);

der held wird erstemal nur so erstellt:
Code:
Held meineHelden[] = new Held[16];
               for (int i = 0; i<16; i++){
                   meineHelden[i] = new Held("images/null.png");
               }

hier das zeichnen des bildes(dieser code liegt in der klasse Karte, von der Held erbt):

Code:
public void paint(Graphics g){
        bild = Toolkit.getDefaultToolkit().getImage(imgPath);
        float i = 0;
        
        if(imgPath=="images/null.png"){ i=5;} else{i=20;};
        render(bild, (Graphics2D) this.getGraphics(), i/20);
            
    } 
    
    public void render(Image img, Graphics2D g2,float trans){
      
        AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, trans);
      g2.clearRect(0, 0, 52, 66);
      g2.setComposite(ac);
      g2.drawImage(bild, 0, 0, this); 
      
   }


naja. das problem ist ja einfach, dass des panel anscheinend vom bild überdeckt wird und somit nicht mehr auf klicks reagiert... zumindest nicht auf klicks auf das bild
 
dein panel wird nicht vom bild überdenkt sondern von deiner Held komponente. füg den listener an deine Held instanz hinzu.
 
Code:
public void mouseClicked(MouseEvent me){
        //funktioniert??
    }

das hab ich jetzt in meine held klasse geschrieben...


aber nun frage ich mich, wie ich jetzt erkenne, ob was geklickt wurde.
wie kann ich nun aus dieser klasse heraus beispielsweise ein textfeld in meinem spielfeld (klasse spielfeld, objektname: meinFrame) mit einem text füllen?

ich bin grad echt durcheinander...
 
Ich blick noch nicht ganz durch, was das Bild für eine Klasse ist. Aber dem solltest du einen MouseListener hinzufügen, nicht dem JPanel.

Das sollte kein Problem sein, wenn es irgendwie von der Klasse Component abstammt.
 
harr harr...

astrein. hab n bissi rumgefummelt und habs jetzt tatsächlich geschafft. dankean alle für denkanstösse und hilfen...
bin jetzt auch nicht mehr verwirrt =D
 
mich würde mal der quelltext für das anklickbare bild interessieren,

ich habe mehrere bilder die per doublebuffering auf ein panel geschmiert werden und ich versuche grad verzweifelt die bilder auswählbar zu machen mit nem mausklick
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben