[java] g = eenPanel.getGraphics?

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
Ik gebruik jbuilder 3.5 en wil nu in een methode draw() van een panel Graphics g = eenPanel.getGraphics doen zodat ik daarna op dit panel kan tekenen. dat JPanel geef ik in de constructor mee aan de class waarinde draw() methode in staat.

als ik dit doe in de draw methode krijg ik een nullPointerException. (g = null als ik deze naar het beeld schrijf met System.out.print(g);)

(zie ook voorbeeld 13.5 in boek JAVA JAVA JAVA (als je dat boek hebt of weet te vinden)).

iemand een idee wat ik hieraan kan doen.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Even [java] in je titel gezet.

Maar waarschijnlijk wordt het een rondje debuggen, een nullPointer ontstaat niet zomaar.
Dus moet je die terugtraceren (de exception afvangen en de stacktrace printen bijvoorbeeld)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Als een panel nog niet zichtbaar is, is g null
als je even een test doet in je draw
code:
1
2
3
4
5
6
7
8
if (g!= null)
{
   .. paint dinges
}
else
{
   .. doe niets
}

  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
Op woensdag 19 juni 2002 10:27 schreef wasigh het volgende:
Als een panel nog niet zichtbaar is, is g null
als je even een test doet in je draw
code:
1
2
3
4
5
6
7
8
if (g!= null)
{
   .. paint dinges
}
else
{
   .. doe niets
}
dus als ik het goed begrijp moet ik eerst het panel aan de applet toevoegen en dan pas draw() gaan aanroepen. zal het even proberen.

  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
dit is de code
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
import java.awt.*;
import javax.swing.*;

public class testPanel extends Graphics
{
  private JPanel panel;

  public testPanel(JPanel canv)
  {
    panel = canv;
  }


  public void draw()
  {
    Graphics g = panel.getGraphics();
    System.out.println(panel.getGraphics());

    if(g!=null)
    {
    g.drawRect(10,10,100,100);
    g.setColor(Color.blue);
    g.fillRect(110,10,100,100);

    }
  }
}

als ik dan de draw methode aanroep vanuit een applet geeft ie dus nu geen nullpointerexception meer maar tekenen doet ie ook niet. (dit is puur testen om het ff simpel te houden. moet namelijk zoiets in een wat groter programma komen)

g = null geeft ie nog steeds weer. ik heb nu eerst het panel toegevoegd ( this.getContentPane.add(panel);)en toen test.draw(); gedaan.

iemand een idee hoe ik dit oplos??

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom doe je extends Graphics? Als de peer van een component nog niet aangemaakt is( dus normaal gesproken als het nog niet zichtbaar is op het scherm ) dan heeft het component nog geen graphics object

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Dit gaat dus inderdaad niet de goeie kant op (heb het niet gezien, maar thanx 2 glimmi zie ik het heldere licht ;) Extenden van grapics en daar weer een panel aan meegeven? Ga jij eens snel je javaboek erbij pakken ;)

Wat probleer je eigelijk te maken? Als je een plaatje ofzo wilt afdrukken moet je gewoon ff een JLabel of een JButton pakken en dan ben je van dit hele Graphics geouwehoer af.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op woensdag 19 juni 2002 15:45 schreef dexter07051982 het volgende:
dit is de code
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
import java.awt.*;
import javax.swing.*;

public class testPanel extends Graphics
{
  private JPanel panel;

  public testPanel(JPanel canv)
  {
    panel = canv;
  }


  public void draw()
  {
    Graphics g = panel.getGraphics();
    System.out.println(panel.getGraphics());

    if(g!=null)
    {
    g.drawRect(10,10,100,100);
    g.setColor(Color.blue);
    g.fillRect(110,10,100,100);

    }
  }
}
Ik begrijp echt niet wat je wilt gewoon :? Een graphicsobject extenden :? En hoe kan je nou panel toevoegen aan het contentPane als je panel private is :?

Ik snap echt werkelijk geen ene jota van deze code hoor. Volgens mij loop je gewoon AWT door Swing heen te pleuren en dat werkt echt voor geen ene donder.

Als ik jou was zou ik alles opnieuw opbouwen in Swing. Kijk dan eerst even hier:
http://java.sun.com/docs/books/tutorial/uiswing/mini/index.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zie Glimi
en /14 is niet de manier om vanaf stap 1 java te leren.

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.