Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
画一个不'的圆;";“中断”;在Java中调整大小时_Java_Swing_Awt_Geometry_Graphics2d - Fatal编程技术网

画一个不'的圆;";“中断”;在Java中调整大小时

画一个不'的圆;";“中断”;在Java中调整大小时,java,swing,awt,geometry,graphics2d,Java,Swing,Awt,Geometry,Graphics2d,当窗口最大化或最小化时,如何绘制可调整大小的圆?我所拥有的代码实际上并不像我所希望的那样画圆。如果有任何帮助,我将不胜感激,因为我以前从未在Java中使用过图形,而Oracle网站对我的帮助也仅此而已。谢谢 public class GUI extends JFrame { public GUI() { JPanel p1 = new JPanel(); } public void paintComponent(Graphics g) {

当窗口最大化或最小化时,如何绘制可调整大小的圆?我所拥有的代码实际上并不像我所希望的那样画圆。如果有任何帮助,我将不胜感激,因为我以前从未在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);
    }

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

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)来清除面板的背景

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

事实上,我仔细看了你的代码,它什么也没做。JFrame没有paintComponent()方法,因此永远不会执行代码。另外,您创建了一个面板,但不使用它执行任何操作

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


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

因此,根据(图形/框架)大小绘制椭圆,并不总是“50x50”。阅读该教程后,我对如何将这些想法应用于我的代码更为困惑。@Ben,没错,因为您的代码结构不好。这就是为什么我建议您从教程示例代码开始。然后用
drawOval(…)
语句替换
drawstring(…)
语句。不要试图更改代码。从一个工作示例开始学习更好的结构!