Permalänk
Medlem

Problem med grafik i Java

Jag försöker rita ett blått fönster med en svart rektangel i den men får bara upp ett grått fönster utan någonting i.
Min kod är:

import java.awt.*; import javax.swing.*; public class main { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBackground(Color.BLUE); frame.setVisible(true); Graphics g = frame.getGraphics(); g.setColor(Color.BLACK); g.fillRect(100, 100, 50, 50); frame.repaint(); } }

Permalänk
Medlem

Tänk på att fönster ritas om ganska ofta, t.ex. när du flyttar fönstret, men din ritkod kan bara köras en gång. Du kan skapa en egen JPanel och överskugga paintComponent(Graphics g) där du placerar din ritkod.

Permalänk
Medlem

Jag ändrade koden till detta:
main.java

import java.awt.*; import javax.swing.*; public class main { public static void main(String[] args) { JFrame frame = new JFrame(); MyJPanel panel = new MyJPanel(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.add(panel); } }

MyJPanel.java

import java.awt.*; import javax.swing.*; public class MyJPanel extends JPanel { MyJPanel(){ this.setBackground(Color.BLUE); } public void paintComponent(Graphics g){ g.setColor(Color.BLACK); g.fillRect(100, 100, 50, 50); } }

Nu får jag fram en svart rektangel men bakgrunden är inte blå.

Permalänk
Medlem
Skrivet av Snejk:

Jag ändrade koden till detta:

... kod ...

Nu får jag fram en svart rektangel men bakgrunden är inte blå.

Painting in AWT and Swing

För många komponenter gäller att du i paintComponent måste anropa super.paintComponent för att bakgrundsfärgen ska ritas ut automatiskt.

Visa signatur

Vill du ha svar? Citera mig gärna.