Permalänk
Avstängd

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); } }

Permalänk
Inaktiv

Är inte helt inne i Java men jag skulle gissa på att bollen kanske ritas under (före alltså) bakgrunden.

Permalänk
Medlem

Jag skulle gissa på att du behöver kalla på .draw() också i din funktion.

Permalänk
Medlem

Fungerar det om du lägger in ball.draw(g2d); i paint?

Visa signatur

[ i7 8700k | MSI Z370 Krait | 16GB | MSI 3080 Ventus 3X OC ]

Permalänk
Avstängd
Skrivet av anon150287:

Ä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.

Skrivet av haxbax:

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?

Skrivet av SayZk:

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)

Permalänk
Inaktiv

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.

Permalänk
Avstängd

Det fungerar typ nu tack