2014-11-25 58 views
0

我似乎无法弄清楚为什么我的同心圆不排列。我的循环对我来说看起来是正确的,测量结果是正确的,但由于某种原因,最后几圈是偏离中心的。这是我遇到的第一个问题。第二个问题是,我似乎无法在每个方块中打印同心圆。再次,我似乎无法在我的逻辑中发现任何问题,但显然存在一个问题。任何帮助都会很棒。图形漆组件和回路故障

这应该是最终产品

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

我想帮助你,但是通过盯着图形来描述。其实我无法从图表中看出你在说什么。 – MeBigFatGuy 2014-11-25 02:05:23

+0

所以...你的问题是什么?简单地说我的代码不起作用不会帮助人们了解您的问题并提供帮助 – 2014-11-25 02:07:08

+0

该图像是我想要的样子,但我的代码看起来不像这样 - 它非常接近。 – KangarooRIOT 2014-11-25 02:07:20

回答

2

基本上,“螺旋”循环修改所需的其他地方

我会做什么,是变量状态创建一个新的一系列变量,初始化为当前状态,并修改这些,而不是...

   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

+0

我在哪里放置你发布的代码?感谢您的帮助! – KangarooRIOT 2014-11-25 02:34:09

+0

用它替换你当前的螺旋循环,这是第三个“for-loop”位... – MadProgrammer 2014-11-25 02:37:48

+0

太棒了!谢谢 – KangarooRIOT 2014-11-25 03:13:49