Haj,
Ik ben nogal een beginner met Java, doe het nog maar 3 maanden oid.
Laatst had ik dus een probleem met een nullpointer in mijn projectje.
Projectje bestaat uit een applicatie, die een externe klasse thread aanroept.
De thread tekent vervolgens iets op het scherm.
Nou is het probleem dus, dat ik niet bijvoorbeeld in mijn Thread kan neerzetten;
(in het 'run' gedeelte)
"g.fillRect(10,10,50,50);"
Omdat ie uiteraard eerst moet weten wat g precies is.
Ik dacht eerst dus, ok fijn,
dan maak ik een methode die om de Graphics vraagt en dan lukt het allemaal wel:
Ik helemaal blij dat het eindelijk werkt, want mijn animatie werkte eindelijk. (fillRect is overigens een voorbeeld waarbij g gebruikt wordt. In werkelijkheid gebruik ik plaatjes in for-loops etc.) . maar later blijkt dus dat deze methodes niet werken omdat ze niet binnen de public void run() staan van de Thread. Ik kwam er namelijk achter dat bijvoorbeeld het scherm waarin mijn applicatie draaide pas sloot als de animatie klaar was.
Nu is het dus kennelijk de bedoeling dat alle dingen die als Thread draaien in het run gedeelte komen, maar het probleem is echter dat ik deze run methode niet mag aanpassen omdat het dan niet de werkelijke thread is maar slechts een andere methode buiten de werkelijke thread.
Wat ik bedoel:
Werkt niet, omdat ie dan niet de originele run methode override, maar het gewoon als andere methode ziet. Of maak ik hier een denkfout? Hoe kan ik zorgen dat ik wel via parameters Graphics g kan doorgeven én dat ik in de werkelijke thread zit?
Ik vind het erg lastig om het probleem goed te omschrijven omdat ik zelf een beetje in de war ben, maar ik hoop dat het een beetje te begrijpen is. Heb wel een beetje proberen te searchen maar op iets duidelijks kom ik niet uit.
Wel kwam ik een code tegen als in
Ik dacht dus dat ik dan in mijn Thread naar de hoofdapplicatie (stel hoofdapplicatie is Postbode) kon verwijzen. Dus:
maar dan gaat de compiler klagen over static context.
Snap het allemaal niet echt meer, help
Ik ben nogal een beginner met Java, doe het nog maar 3 maanden oid.
Laatst had ik dus een probleem met een nullpointer in mijn projectje.
Projectje bestaat uit een applicatie, die een externe klasse thread aanroept.
De thread tekent vervolgens iets op het scherm.
Nou is het probleem dus, dat ik niet bijvoorbeeld in mijn Thread kan neerzetten;
(in het 'run' gedeelte)
"g.fillRect(10,10,50,50);"
Omdat ie uiteraard eerst moet weten wat g precies is.
Ik dacht eerst dus, ok fijn,
dan maak ik een methode die om de Graphics vraagt en dan lukt het allemaal wel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| class Test extends Thread {
...
public void run() {
//leeggelaten
}
public void teken(Graphics g) {
g.fillRect(10,10,50,50);
}
...
} |
Ik helemaal blij dat het eindelijk werkt, want mijn animatie werkte eindelijk. (fillRect is overigens een voorbeeld waarbij g gebruikt wordt. In werkelijkheid gebruik ik plaatjes in for-loops etc.) . maar later blijkt dus dat deze methodes niet werken omdat ze niet binnen de public void run() staan van de Thread. Ik kwam er namelijk achter dat bijvoorbeeld het scherm waarin mijn applicatie draaide pas sloot als de animatie klaar was.
Nu is het dus kennelijk de bedoeling dat alle dingen die als Thread draaien in het run gedeelte komen, maar het probleem is echter dat ik deze run methode niet mag aanpassen omdat het dan niet de werkelijke thread is maar slechts een andere methode buiten de werkelijke thread.
Wat ik bedoel:
code:
1
| public void run(Graphics g) {} |
Werkt niet, omdat ie dan niet de originele run methode override, maar het gewoon als andere methode ziet. Of maak ik hier een denkfout? Hoe kan ik zorgen dat ik wel via parameters Graphics g kan doorgeven én dat ik in de werkelijke thread zit?
Ik vind het erg lastig om het probleem goed te omschrijven omdat ik zelf een beetje in de war ben, maar ik hoop dat het een beetje te begrijpen is. Heb wel een beetje proberen te searchen maar op iets duidelijks kom ik niet uit.
Wel kwam ik een code tegen als in
code:
1
| Graphics g=this.getGraphics() |
Ik dacht dus dat ik dan in mijn Thread naar de hoofdapplicatie (stel hoofdapplicatie is Postbode) kon verwijzen. Dus:
code:
1
| Graphics g=Postbode.getGraphics() |
maar dan gaat de compiler klagen over static context.
Snap het allemaal niet echt meer, help