图形绘制组件和循环故障

时间:2014-11-25 02:00:59

标签: java loops paintcomponent

我似乎无法弄清楚为什么我的同心圆没有排成一行。我的循环对我来说似乎是正确的,测量结果是正确的,但由于某种原因,最后几个圆圈偏离中心。这是我遇到的第一个问题。第二个问题是,我似乎无法在每个方块中打印出同心圆。再一次,我似乎无法在我的逻辑中找到任何问题,但显然存在问题。对此的任何帮助都会很棒。

这应该是最终产品

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

}
}

* ExamplePanel.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 个答案:

答案 0 :(得分:2)

基本上,你&#34;螺旋&#34;循环正在修改其他地方所需的变量状态

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

                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