Sebastian
Sebastian

Reputation: 537

Drawing a simple circle with Java swing does not work

I think I am missing something really obvious but somehow this code does give me an empty window but it does not paint the red oval. What am I missing?

public class Test extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponents(g);
        g = this.getGraphics();
        Graphics2D g2 = (Graphics2D) g;

        // Anti-aliasing
        g2.setColor(new Color(255, 0, 0));
        g2.fillOval(0, 0, 20, 20);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Ball");
        Test panel = new Test();

        frame.getContentPane().add(panel);
        frame.setPreferredSize(new Dimension(250, 200));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.pack();
        frame.setVisible(true);
    }

}

Upvotes: 0

Views: 158

Answers (1)

the paintComponent is not correct, remove this g = this.getGraphics();

public void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2d = (Graphics2D)g;

   Ellipse2D.Double circle = new Ellipse2D.Double(xR, yR, diameter, diameter);
   g2d.fill(circle);
   ...
}

Upvotes: 4

Related Questions