[JAVA] Graphics null pointer exception

Pagina: 1
Acties:

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Ik krijg een null pointer exception bij het aan roepen van een methode.

hier staat de volledige klasse:
code:
1
2
3
4
5
6
7
8
9
10
11
public class tekenvel extends Canvas
{
  Stand stand = new Stand();
  Graphics g;

  public void teken(Stand stand)
  {
    this.stand = stand;
    g.drawRect(100,100,200,300);
  }
}

Het is waarschijnlijk een hele simpele fout maar kom er niet uit :'(

Ducati: making mechanics out of riders since 1946


  • Stalkert
  • Registratie: Januari 2001
  • Laatst online: 30-08 21:27
heb je de desbetreffende packages geimporteerd ?

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
jep

Ducati: making mechanics out of riders since 1946


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 01-09 15:10
Duh... Lijkt me logisch... "Graphics g" is helemaal niet geinitializeerd... Daar zal de java compiler nog best over klagen...
Anyway, waarschijnlijk wil je de standaard "draw" functie van het Canvas overschrijven met je eigen functie...

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 01-09 15:10
Zo dus:
code:
1
2
3
4
5
6
7
8
9
10
public class tekenvel extends Canvas
{
  Stand stand = new Stand();

  public void paint(Graphics g)
  {
    this.stand = stand;  // <-- deze regel slaat nergens op en kun je gewoon weglaten
    g.drawRect(100,100,200,300);
  }
}

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Maar Graphics is een abstracte klasse.... Die kan je toch niet initialiseren :?

Ducati: making mechanics out of riders since 1946


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 01-09 15:10
MayaFreak schreef op 02 september 2002 @ 19:35:
Maar Graphics is een abstracte klasse.... Die kan je toch niet initialiseren :?
Klopt.
Maar als je hem niet initializeerd en alleen definieerd, dan heb je een null pointer. Vandaar je foutmelding...

De bedoeling is dan ook om het Graphics object alleen te gebruiken alszijnde onderdeel van een ander object. Dus niet losstaand.
Door de draw-functie van Canvas te overschrijven (ben ff het woordje kwijt hier), kan je gebruik maken van het al bestaande Graphics-object van het Canvas zelf. Dat is de juiste manier van het gebruiken van het Graphics-object.

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Thanx GarBaGe ik ben eruit. Moest gewoon de paint methode gebruiken 8)7

Ducati: making mechanics out of riders since 1946


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:44

momania

iPhone 30! Bam!

GarBaGe schreef op 02 september 2002 @ 19:39:
Door de draw-functie van Canvas te overschrijven (ben ff het woordje kwijt hier), kan je gebruik maken van het al bestaande Graphics-object van het Canvas zelf.
Jij zoekt vast inheratence :)

Neem je whisky mee, is het te weinig... *zucht*


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
momania: Jij zoekt vast inheratence :)
Dan kan hij lang zoeken :+ .

inheritance dus ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Mwoah, ik denk dat hij bedoelt dat je de methode over~ridden moet worden ;) Maw, de overgeërfde methode 'paint' overschijven met je eigen versie.

Echter zoek ook nog even op 'design with interfaces or abstract classes', want wat hier wordt beweerd over het Graphics object ( De bedoeling is dan ook om het Graphics object alleen te gebruiken alszijnde onderdeel van een ander object. Dus niet losstaand. ) is echt onzin, als het bedoeld wordt als ik het zie :)

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 01-09 15:10
Glimi schreef op 02 september 2002 @ 21:46:
Mwoah, ik denk dat hij bedoelt dat je de methode over~ridden moet worden ;) Maw, de overgeërfde methode 'paint' overschijven met je eigen versie.

Echter zoek ook nog even op 'design with interfaces or abstract classes', want wat hier wordt beweerd over het Graphics object ( De bedoeling is dan ook om het Graphics object alleen te gebruiken alszijnde onderdeel van een ander object. Dus niet losstaand. ) is echt onzin, als het bedoeld wordt als ik het zie :)
Dat is het: overridden...
Ik zat al met inheritance en overerven in mijn hoofd, maar zo'n paar weken vakantie zorgen er toch voor dat je het net ff niet meer helemaal weet :)

Anyway, mijn tekst is idd behoorlijk krom, maar gelukkig snapt de topicstarter het wel... Een abstracte classe kan je niet instantieren, dus blijven er 2 mogelijkheden over...
1. Je gebruik een object wat overerft van Graphics en deze implementeert.
2. Je maakt zelf een nieuw object wat overerft van Graphics, waarvan je zelf de implementatie maakt.

Het was wel duidelijk dat de topicstarter natuurlijk gewoon het Graphics object van de Canvas wilde hebben... :)

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD

Pagina: 1