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(); } }
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.
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å.
Jag ändrade koden till detta:
... kod ...
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.
Vill du ha svar? Citera mig gärna.
Prylar säljes, köpes, bytes och skänkes