Object parrent

Status
Niet open voor verdere reacties.

jorants

Gebruiker
Lid geworden
22 mei 2006
Berichten
105
Hoi,

Ik zit met het volgende probleem:
ik heb twee classes, zeg Auto en deur.
auto heeft onder andere een variable voordeur van type deur en een functie start()
Dan maak ik een object aan van de class auto, laten we het Opel noemen.
We maken ook het opject opel.voordeur aan.
Nu wil ik vanuit een functie in voordeur de functie opel.start() aanroepen.

maar daar loop ik vast, hoe roep ik vanuit een lid het object aan?
hoe vind ik dus Opel terug vanuit mijn voordeur object?

Ik hoop dat de vraag duidelijk is, doordat de classes in mijn programma nogal groot zijn wou ik ze niet helemaal posten maar het probleem schetsen.

Alvast bedankt,

Joran
 
hmm ik hoop dat ik je probleem goed begrepen heb. bedoel je zoiets ?

[cpp]

class Auto
{
private Deur voordeur;

public Auto(){

}

public void start(){

}

public void setDeur(Deur deur){
this.voordeur = deur;
}

public Deur getDeur(){
return voordeur;
}
}

class Deur{

private Auto auto;

public Deur(Auto auto){
this.auto = auto;
}

public void voordeurFunctie(){
auto.start();
}

}


class Main()
{
public Main()
{
Auto opel = new Auto();
opel.setDeur(new Deur(opel));
opel.getDeur().voordeurFunctie();
.
}
}

[/cpp]
 
Laatst bewerkt:
bedankt voor de reactie :-)

Ja dat had ik dacht ik ook, ik heb toch maar even mijn code helemaal gestripped voor de duidelijkheid, waar ga ik fout?

[CPP]
import javax.swing.JFrame;

public class Frame extends JFrame {

public Frame() {
GameEngine g = new GameEngine(this);

setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(200,200);
add(g);
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
new Frame();
}
}
[/CPP]

[CPP]
import javax.swing.JPanel;

public class GameEngine extends JPanel{
private Frame parrent;

public GameEngine(Frame f)
{
parrent = f;
parrent.setSize(500,500);
System.out.println("hoi");
}

}
[/CPP]

"hoi" wordt wel bereikt, maar het frame wordt geen 500x500 :(
 
dat klopt ja omdat je "flow" tegenstrijdig is wat dat betreft:)

je maakt een new Frame() aan. de eerste regel van je constructor maakt een new GameEngine() aan.
de GameEngine set vervolgens de grootte van de parrent op 500 x 500 en print hoi uit.

Het programma gaan daarna weer verder in de Frame constructor, waar de grootte op 200 x 200 gezet wordt.

De call vanuit je GameEngine wordt daarom teniet gedaan.

Simpele oplossing:

Zet het aanmaken van je GameEngine als laatste in je constructor (van de Frame class)
 
dham wat een domme fout, dat ik daar overheen geizen heb :P
Hartstikke bedankt!
 
hey,

Ik weet het, maar mijn frame gaat geen layout-manager gebruiken, er komt 1 voledig vullend pannel in.
maat bedankt :-)

Joran
 
Dan wensen we je verder veel succes. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan