[Java] het lukt niet :| (nullpointer in applet)

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Het gaat hier dus om een applet

Ik heb een hoofdklasse, en hier in zit een paint(), hierin staat een verwijzing naar een andere methode, nml:
levels.teken(g);
In deze methode staat weer een verwijzing naar:
lijnen.lijnentekenen(g);
In de methode lijnentekenen(g) worden een aantal lijnen enz. getekend. Nu krijg ik dus geen compiler errors maar wel runtime errors, nml de NullPointerException.
Kan dit niet? of moet er iets worden bijgezet?? Als ik trouwens lijnen.lijnentekenen(g); vervang voor bv: g.drawString("edddee",20,20); krijg ik dit op beeld, zonder runtime errors.

Kan je in paint maar 1 verwijzing maken, en moet daar teken code staan?

Wie weet hiet een antwoord op? Thnx.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

een antwoord geven zonder code te zien is vrij lastig ;)

  • dlmh
  • Registratie: Januari 2000
  • Laatst online: 15-09 11:23

dlmh

Lo-Fi

volgens mij is het this.lijnentekenen(g) en niet lijnen.lijnentekenen(g).

Bovendien krijg je een nullpointer error, dus verwijs je ergens naar dat NIET bestaat... typefout ergens?

“If a cluttered desk is a sign of a cluttered mind, of what, then, is an empty desk a sign?” - Albert Einstein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

en als je nou effe kijkt op welke regel die NullPointerException optreedt, en effe alle code rond die regel hier neerpleurt, dan kunnen we je ook nog eens helpen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Ok, hier de relevante code, inspringen werkt niet, dus kan ik nix aan doen. Ik ben hier nog niet echt goed in, dus niet lachen :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.applet.*;
import java.awt.*;

/**
 * Dit is het auto, nu fiets-race-spel voor DND.
 *
 * @author R.Hobo M.Leijgraaf
 * @version %I%
 */


public class racen extends Applet
  {
  Level levels;


  public void init ()
     {
     levels = new Level();
     }

     public void paint ( Graphics g )
     {
     levels.teken(g);
     }



}


class Level extends racen
  {

  Belijning lijnen;
  


  public void Level ()
     {
     lijnen = new Belijning();
     }


  
  public void teken ( Graphics g )
     {
  
     lijnen.lijnentekenen(g);     
    
     }
     
}

class Belijning
{
 void lijnentekenen ( Graphics g )
    {
    g.drawString ("hee het werkt!",20,20);
    }
}

* wasigh test zijn modrechten en gooit er ff [ code ] [/ code ] tags omheen ;)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Die NullPointException treedt op bij:

lijnen.lijnentekenen(g);
en
levels.teken(g);

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
:) als ik dat van die code tags wist, had ik de code wel ff beter uitgelijnd :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

als ik je goed begrijp werkt het dus wel als je
code:
1
lijnen.lijnentekenen (g);

in Level.teken () vervangt door
code:
1
g.drawString ("iets", 20, 20);

(wat ik me trouwens afvraag is waarom Level extends racen :?)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op woensdag 14 november 2001 13:49 schreef Rempage0611 het volgende:
:) als ik dat van die code tags wist, had ik de code wel ff beter uitgelijnd :)
Weer wat geleerd :)
met Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif
kun je je post editten en hoef je niet 2 reacties onder elkaar te plaatsen

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Op woensdag 14 november 2001 13:46 schreef Rempage0611 het volgende:
Die NullPointException treedt op bij:
lijnen.lijnentekenen(g);
en levels.teken(g);
Wat nu meteen opvalt is dat in beide gevallen een verwijzing naar g staat. Waar wordt dat Graphics object aangemaakt?

With the light in our eyes, it's hard to see.


  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op woensdag 14 november 2001 13:51 schreef OiSyN het volgende:
als ik je goed begrijp werkt het dus wel als je
code:
1
lijnen.lijnentekenen (g);

in Level.teken () vervangt door
code:
1
g.drawString ("iets", 20, 20);

(wat ik me trouwens afvraag is waarom Level extends racen :?)
Yep, dan werkt het wel.
En extends racen.. Tja hij kan ook extends applet doen. Maar hij moet iets extenden, anders werkt
bufferG = buffer.getGraphics(); niet. Dit is code die er ook in moet, maar die is er nu ff uit, om het wat overzichtelijker te houden.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op woensdag 14 november 2001 13:52 schreef Bobco het volgende:

[..]

Wat nu meteen opvalt is dat in beide gevallen een verwijzing naar g staat. Waar wordt dat Graphics object aangemaakt?
Dat graphics object wordt aangemaakt als de paint method van Applet wordt aangeroepen.

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 16-09 23:56

Jrz

––––––––––––

Doe een CTRL-F5 (harde refresh) zodat je applet wordt herladen.
Waarschijnlijk zit je met oude code

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 14 november 2001 13:52 schreef Rempage0611 het volgende:

[..]

Yep, dan werkt het wel.
En extends racen.. Tja hij kan ook extends applet doen. Maar hij moet iets extenden, anders werkt
bufferG = buffer.getGraphics(); niet. Dit is code die er ook in moet, maar die is er nu ff uit, om het wat overzichtelijker te houden.
Dan zit je toch met een ernstig ontwerpfout, als het persee Applet moet extenden (en ik denk niet dat het dan wel gaat werken, behalve dat het dan ineens compilet) :)

Maar zoals je het hierboven hebt beschreven moet het werken... Koppiepeest het eens in een apart proggie en run dat eens

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Als ik m niet extend: zelfde fout ;(

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op woensdag 14 november 2001 13:55 schreef Jrz het volgende:
Doe een CTRL-F5 (harde refresh) zodat je applet wordt herladen.
Waarschijnlijk zit je met oude code
Werkt ook niet.

  • Melkie
  • Registratie: Maart 2000
  • Laatst online: 08-09 07:11
Waarschijnlijk wordt de paint() methode aangeroepen, voordat je init() methode is aangeroepen. Je moet in de paint() methode dus even controleren of je membervariabele "levels" niet NULL is. Indien dat het geval is, kun je de methode teken() daarop aanroepen. Anders doe je niks.

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op woensdag 14 november 2001 14:02 schreef Skater het volgende:
Waarschijnlijk wordt de paint() methode aangeroepen, voordat je init() methode is aangeroepen. Je moet in de paint() methode dus even controleren of je membervariabele "levels" niet NULL is. Indien dat het geval is, kun je de methode teken() daarop aanroepen. Anders doe je niks.
DUDE! ik heb m`n constuctor nu in de paint van levels gezet en hij doet `t :) :) :) :) :) :) THNX!!!

Nou ff constructor zien aan te slingeren :z

  • Tomatrix
  • Registratie: Juni 1999
  • Laatst online: 27-02-2025
De constructor van je class Level is niet goed. Er staat nu:
code:
1
2
3
public void Level () {
...
}

Java ziet dit nu gewoon als een method en niet als een constructor.

Het moet dus worden:
code:
1
2
3
public Level () {
...
}

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op woensdag 14 november 2001 14:06 schreef Tomatrix het volgende:
De constructor van je class Level is niet goed. Er staat nu:
code:
1
2
3
public void Level () {
...
}

Java ziet dit nu gewoon als een method en niet als een constructor.

Het moet dus worden:
code:
1
2
3
public Level () {
...
}
Thnx, het hele probleem was dus het woordje void :)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op woensdag 14 november 2001 14:02 schreef Skater het volgende:
Waarschijnlijk wordt de paint() methode aangeroepen, voordat je init() methode is aangeroepen. Je moet in de paint() methode dus even controleren of je membervariabele "levels" niet NULL is. Indien dat het geval is, kun je de methode teken() daarop aanroepen. Anders doe je niks.
Onmogelijk,

van een Applet wordt altijd eerst de init() aangeroepen en dan pas de Paint();

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op woensdag 14 november 2001 14:17 schreef wasigh het volgende:

[..]

Onmogelijk,

van een Applet wordt altijd eerst de init() aangeroepen en dan pas de Paint();
De bewooring is een beetje fout, hij haalt init door de war met de constructor. In de class level is public Level() zeg maar de init van de class. Aangezien die niet werd geladen, snapte paint het niet.

  • Melkie
  • Registratie: Maart 2000
  • Laatst online: 08-09 07:11
Op woensdag 14 november 2001 14:17 schreef wasigh het volgende:

[..]

Onmogelijk,

van een Applet wordt altijd eerst de init() aangeroepen en dan pas de Paint();
Soz... Java was een tijdje geleden voor mij. Was dit dan zo met de start() methode?

Rampage:
Die extends racen moet je toch echt weghalen bij je classdefinitie van Level. Dat is echt dirty. Dan kun je beter een verwijzing naar de class racen bewaren/passen.
Pagina: 1