画出一个没有“打破”的圆圈"在Java中调整大小时

时间:2014-04-24 20:15:45

标签: java swing awt geometry graphics2d

如何在窗口最大化或最小化时绘制可调整大小的圆圈?我所拥有的代码甚至不像我希望的那样绘制圆圈。任何有关这方面的帮助都将非常感激,因为我之前从未使用过Java中的图形,Oracle网站只对我这么做了很多帮助。感谢。

public class GUI extends JFrame {


    public GUI() {
        JPanel p1 = new JPanel();


    }

    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawOval(0, 0, 50, 50);
    }

    public static void main(String[] args) {
        GUI frame = new GUI();
        frame.setTitle("Circle Generator");
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null); // Center the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

1 个答案:

答案 0 :(得分:2)

要使绘画动态化,您需要获取面板的当前宽度/高度。

public void paintComponent(Graphics g) 
{
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    //g2d.drawOval(0, 0, 50, 50);
    g2d.drawOval(0, 0, getWidth(), getHeight());
}

您还需要super.paintComponent(g)来清除面板的背景。

编辑:

实际上,我仔细研究了你的代码,但什么也没做。 JFrame没有paintComponent()方法,因此您的代码永远不会被执行。此外,您创建一个面板,但随后不做任何事情。

首先阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

然后,您可以使用上面的建议修改教程中的示例来绘制椭圆。