Probleme mit Graphics

mrno

Erfahrenes Mitglied
Hi,
bin gerade mal am Testen mit der Funktion Graphics, leider bekomme ich immer einen Fehler.
Folgenden Code habe ich zum versuch geschrieben:
Code:
package test;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;

import javax.swing.JFrame;

public class TestApplet extends JFrame{
 public TestApplet(){
	 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 Graphics g=this.getGraphics();
	 g.drawLine(0, 0, 100, 100);
	 this.setSize(320,280);
	 this.setVisible(true);
 }
 public static void main(String [] args){
	 new TestApplet();
 }
}
Daraus ergibt sich folgende fehlermeldung:
Code:
Exception in thread "main" java.lang.NullPointerException
	at test.TestApplet.<init>(TestApplet.java:13)
	at test.TestApplet.main(TestApplet.java:18)
Line 13 ist folgender befehl: g.drawLine(0, 0, 100, 100);
Was mache ich falsch?
Was muss ich ändern das es funktioniert.
 
this.getGraphics();

funktioniert nur wenn der Frame schon angezeigt wird.

Überschreibe besser die paint Methode:
Java:
import java.awt.Graphics;

import javax.swing.JFrame;

public class TestApplet extends JFrame {
	public TestApplet() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(320, 280);
		this.setVisible(true);
	}

	@Override
	public void paint(Graphics g) {
		super.paint(g);
		
		g.drawLine(0, 0, 100, 100);
	}

	public static void main(String[] args) {
		new TestApplet();
	}
}
 
Ich habe es jetzt mal ein bissle umgeschrieben. Jetzt bekomme ich zwar keine fehlermeldung mehr, aber er zeichnet mir des auch nicht. Ich will unbedingt meine sachen unabhänging von der Methode paint machen, da ich nacher sachen zeichnen möchte z.b. auf mausklick oder tastatureingabe.
 
Wenn du nicht in der paint Methode was dazu zeichnest, dann wirst du immer das Problem haben dass du was zeichnest was dann von der eigentlichen Komponenten überzeichnet wird.

Dann müsstest du dich auch noch drum kümmern auf resize Events zu reagieren etc. Diese rufen alle automatisch die paint Methode auf.

Selber kannst du diese aufrufen mit einem redraw.

Das dürfte auch im Moment dein Problem sein. Du zeichnest was und das wird dann von der Komponente überzeichnet. Kenne so an sich keinen Fall bei dem man nicht mit paint oder paintComponent überschreiben weiterkommt.
 
Zurück