有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java图形绘制组件和循环故障

我似乎不明白为什么我的同心圆没有排成一行。在我看来,我的循环似乎是正确的,测量结果也是正确的,但由于某种原因,最后几圈偏离了中心。这是我遇到的第一个问题。第二个问题是,我似乎无法在每个正方形上打印同心圆。再一次,我似乎在我的逻辑中找不到任何问题,但显然存在一个问题。在这方面有任何帮助都会很好

这应该是最终产品

enter image description here

*这是我的源代码-ExampleGUI。java*

import javax.swing.*;

public class ExampleGUI {
public static void main(String args []) {


    JFrame frame = new JFrame("Example Graphics");
    ExamplePanel panel = new ExamplePanel();

    frame.getContentPane().add(panel);
    frame.setDefaultCloseOperation(3);
    frame.pack();
    frame.setVisible(true);

}
}

*示例面板。java*

import java.awt.*;

import javax.swing.*;



public class ExamplePanel extends JPanel{

public ExamplePanel() {
    setPreferredSize(new Dimension (600, 600));
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);


    int x = 0;
    int x2 = 5;
    int y = 500;
    int y2 = 505;
    int w = 100;
    int w2 = 90;
    int h = 100;
    int h2 = 90;
    int i, j, k;

    for(j = 1; j < 7; j++) {
        x = 0;
        x2 = x + 5;

        for(i = 1; i < 7; i++) {
            if ((i + j) % 2 == 0) {
                g.setColor(Color.white);
            }  else {
                g.setColor(Color.yellow);
            }
            g.fillRect(x, y, w, h);
            g.setColor(Color.black);
            g.drawRect(x, y, w, h);
            g.setColor(Color.green);
            g.fillOval(x2, y2, w2, h2);

                for(k = 1; k < 7; k++) {
                    g.setColor(Color.black);
                    g.drawOval(x2, y2, w2, h2);
                    x2 = x2 + 5;
                    y2 = y2 + 5;
                    w2 = w2 - 10;
                    h2 = h2 - 10;
                }
            x = x + w;
            x2 = x2 + w2 + 10;

        }


        x = x + w;

        y = y - h;
        y2 = (y2 - h2) - 10;
    }

}
}

*这就是我运行程序时的样子。由于某种原因,它看起来不像另一张照片*

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    基本上,您的“螺旋”循环正在修改其他地方需要的变量的状态

    我要做的是,创建一系列新的变量,初始化为当前状态,然后修改它们

                    int ix = x2;
                    int iy = y2;
                    int ih = h2;
                    int iw = w2;
                    for (k = 1; k < 7; k++) {
                        g.setColor(Color.black);
                        g.drawOval(ix, iy, iw, ih);
                        ix = ix + 5;
                        iy = iy + 5;
                        iw = iw - 10;
                        ih = ih - 10;
                    }
    

    enter image description here