我需要创建一个循环,用垂直线绘制矩形,交替颜色(例如黑色,白色,黑色,白色)。谁能告诉我这是怎么做到的?
我尝试了很多方法,但似乎无法让循环工作,谢谢。
for (int x = 0; x>10;x++) {
int y= 180;
graph2D.drawRect(170, y, 20, 50);
y = y + 45;
}
这就是我所拥有的,由于某种原因它不会画出矩形,我不能让它换成替代颜色。
答案 0 :(得分:4)
你在这里遇到了一些问题。
您的for loop
不会执行任何迭代,因为您的条件是x > 10
而不是x < 10
。
更改第一行:
for (int x = 0; x>10;x++){
要:
for (int x = 0; x < 10; x++) {
此外,您每次迭代都会将y
重置为180,因此一旦您的循环开始,所有矩形将被绘制在彼此之上。在循环外声明y
,或使用x
计算矩形位置。
要么像这样:
int y = 180;
for (int x = 0; x < 10; x++) {
graph2D.drawRect(170, y, 20, 50);
y = y + 45;
}
或者像这样:
for (int x = 0; x < 10; x++) {
graph2D.drawRect(170, (x * 45) + 180, 20, 50);
}
以上数学(x * 45) + 180
是一种非常简单的方式,可以说第一个矩形位于(x * 45) + 180 = 0 + 180 = 180
,第二个矩形位于(x * 45) + 180 = 45 + 180 = 225
,依此类推。依此类推。
要更改矩形的颜色,您需要制作Colors
的列表或数组,并在每次迭代中使用列表中的其他Color
。
//Make the list
Color[] colors = {Color.black, Color.blue, Color.cyan, Color.darkGray,
Color.green, Color.lightGray, Color.magenta, Color.magenta,
Color.orange, Color.pink, Color.red, Color.white, Color.yellow};
//Draw each rectangle
for (int x = 0; x < 10; x++) {
//Change the color
g.setColor(colors[x]);
//Draw the rectangle
graph2D.drawRect(170, (x * 45) + 180, 20, 50);
}
当然,如果您希望颜色是随机的,您可以查看使用Random
类,并生成介于0和colors
数组长度之间的随机数。另请注意,我使用x
作为colors
数组的索引,如果循环将x增加到高于数组中的颜色数,则会得到ArrayIndexOutOfBoundsException。 / p>
我还假设您将Graphics
的实例命名为g
,因为大部分时间都以这种方式完成。
答案 1 :(得分:2)
为什么使用y
变量而不是循环的x
?
@Override
public void paint(Graphics graph2D) {
for (int y=0; y<10; y++) {
int height = 50;
if (y%2==0) {
graph2D.setColor(Color.white);
} else {
graph2D.setColor(Color.black);
}
graph2D.fillRect(170, 180 + y*height, 20, 50);
}
}
在绘制矩形时也要注意区别:
.drawRect(..)
绘制矩形的边框。.fillRect(..)
自己绘制矩形。如果您想在black
和white
颜色之间切换,请更改每个循环的颜色。每个偶数y%2 == 0
的循环将具有一种颜色,否则第二种颜色(在上面的代码中也提到):
if (y%2==0) {
graph2D.setColor(Color.white);
} else {
graph2D.setColor(Color.black);
}