Verktyg Visningsval
2012-04-12, 16:11   #1

Pandy95

Medlem

Registrerad: feb 2012

Java Graphics2D hjälp.


Hej håller på att göra ett program som ska innehålla en blå backrund (görs i en paint metoden). Men sen vill jag också ha en röd boll på skärmen och den ska bli ritad utav en metod som heter draw som ligger i classen Ball.
Jag vill rita bollen i draw metoden är för att jag vill kunna anroppa den och då ska det komma en till boll(Det är inte med i koden en, vill att det ska fungera med en boll först).
Men det fungerar inte jag får backgrunden men ingen boll.

Koden:
Classen Game
import javax.swing.*;
import java.awt.*;

public class Game extends JFrame{
	Graphics2D g2d;
	Ball ball = new Ball();
	
	
	// Threads
	Thread gameloop;
	boolean gameRunning;
	
	public static void main(String [] args){new Game();}
	
	public void paint(Graphics g){
		//Background
		g.setColor(Color.BLUE);
		g.fillRect(0, 0, getSize().width, getSize().height);
	}
	
	public Game() {
	
		//GUI
		setVisible(true);
		setDefaultCloseOperation(3);
		setSize(520,600);
		setResizable(false);
		setLocationRelativeTo(null);
		
		ball.draw(g2d);
	}
}
och classen Ball
import java.awt.*;

public class Ball{
	public void draw (Graphics2D g2d) {
		g2d.setColor(Color.RED);
		g2d.fillOval(50,50, 100, 100);
	}
	
}
Pandy95 är inte uppkopplad
2012-04-12, 16:14   #2

havsmonstret

Medlem

havsmonstrets avatar

Plats: Helsingborg

Registrerad: apr 2010

Är inte helt inne i Java men jag skulle gissa på att bollen kanske ritas under (före alltså) bakgrunden.
havsmonstret är inte uppkopplad Folding
2012-04-12, 16:22   #3

haxbax

Medlem

Registrerad: apr 2012

Jag skulle gissa på att du behöver kalla på .draw() också i din funktion.
haxbax är inte uppkopplad
2012-04-12, 16:28   #4

SayZk

Medlem

SayZks avatar

Plats: Mölnlycke

Registrerad: jun 2009

Fungerar det om du lägger in ball.draw(g2d); i paint?
__________________
[Intel 2600k @ 3.2 (1.03v) | Gigabyte Z68XP-UD3 | 8GB Corsair | Gigabyte HD7770 | Silver Power 750W | Fractal Design Define R3]
SayZk är inte uppkopplad
2012-04-12, 17:50   #5

Pandy95

Medlem

Registrerad: feb 2012

Citat:
Ursprungligen inskrivet av havsmonstret Visa inlägg
Är inte helt inne i Java men jag skulle gissa på att bollen kanske ritas under (före alltså) bakgrunden.
Nej det tror jag inte för om jag tar bort bakgrunden så syns bollen fortfarande inte.
Citat:
Ursprungligen inskrivet av haxbax Visa inlägg
Jag skulle gissa på att du behöver kalla på .draw() också i din funktion.
Ded gör jag redan i Game classen. Eller vad menar du?
Citat:
Ursprungligen inskrivet av SayZk Visa inlägg
Fungerar det om du lägger in ball.draw(g2d); i paint?
Nej det fungerar inte heller.

Såg nu att de är ett felmeddelande när jag kör programmet:

Exception in thread "main" java.lang.NullPointerException
at Ball.draw(Ball.java:7)
at Game.<init>(Game.java:34)
at Game.main(Game.java:15)
Pandy95 är inte uppkopplad
2012-04-12, 18:01   #6

havsmonstret

Medlem

havsmonstrets avatar

Plats: Helsingborg

Registrerad: apr 2010

Du behöver kanske skapa Graphics2D objektet?
g2d = new Graphics();
Enligt felmeddelandet verkar det ju som att grafikobjektet du skickar in i ball.draw(); är null.
havsmonstret är inte uppkopplad Folding
2012-04-12, 18:15   #7

Pandy95

Medlem

Registrerad: feb 2012

Det fungerar typ nu tack
Pandy95 är inte uppkopplad
Senaste nyheterna

Redaktionens senaste nyhetsrubriker

Sök jobb