用Java swing绘制一个简单的圆圈不起作用

时间:2016-10-10 11:43:09

标签: java swing awt java-2d

我想我错过了一些非常明显的东西,但不知怎的,这段代码确实给了我一个空窗口,但它没有画出红色的椭圆形。我错过了什么?

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

}

1 个答案:

答案 0 :(得分:4)

paintComponent 不正确,请删除此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);
   ...
}