Avatar billede dresen Nybegynder
22. september 2005 - 02:33 Der er 1 løsning

Passing information between objects

Hej eksperter.

Jeg er i gang med en opgave, hvor jeg skal have 2 klasser i samme fil.

Jeg vil gerne sende en reference fra det ene objekt til konstruktøren i det andet. Dette sker i main metoden, hvor "this" gives som reference til konstruktøren i MakeDotOnMouseClick.

Jeg modtager fejlbeskeden "Can't do this in a static context" - hvorfor?


import javax.swing.JFrame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class DotFrame extends JFrame {
   

       
    public static void main(String[] args){
        final DotFrame df = new DotFrame();
        MakeDotOnMouseClick makeDot = new MakeDotOnMouseClick(this);
        df.addMouseListener(makeDot);       
    }
   
   
    public DotFrame(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);
        setTitle("DotFrame");
        setVisible(true);
    }
}

class MakeDotOnMouseClick extends MouseAdapter{

    DotFrame dfObj;
   
    MakeDotOnMouseClick(DotFrame dfObj){       
        this.dfObj = dfObj;       
    }
   
    public void mouseClicked(MouseEvent e){
        // Referring to the outer class object
        dfObj.getGraphics().fillOval(e.getX()-5,e.getY()-5,10,10);       
    }   
   
}

På forhånd tak :D
Avatar billede dresen Nybegynder
22. september 2005 - 02:39 #1
Ok, jeg har forstået det. Jeg er i main metoden, hvorfor jeg ikke kan referere til this

Jeg lukker og slukker :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester