gpt4 book ai didi

java - java中Paint循环出现问题

转载 作者:行者123 更新时间:2023-11-30 03:40:12 25 4
gpt4 key购买 nike

无论出于何种原因,我的循环似乎没有正确打印颜色。我在填充和绘制之前设置了颜色,但它根本没有显示 Color.white。它显示出白色。为了更好地解释我想要的图片是什么样子,我附上一张照片。感谢您的帮助!

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;

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

for(i = 1; i < 7; i++) {
if(i % 2 == 0) {
g.setColor(Color.white);
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);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);

}else if (i % 2 == 1 && j % 2 == 1)
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);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);

x = x + w;
x2 = x2 + w2 + 10;


}

x = x + w;

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


}
}

最佳答案

让我们从删除重复项开始,例如,而不是...

if (i % 2 == 0) {
g.setColor(Color.white);
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);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);

} else if (i % 2 == 1 && j % 2 == 1) {
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);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);

你真的只需要...

if (i % 2 == 0) {
g.setColor(Color.white);
} else if (i % 2 == 1 && j % 2 == 1) {
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);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);

您在第一个 if 语句中所做的任何操作都会被 if-else block 之外的其他绘制代码删除...

接下来,你的逻辑有点不对劲,而不是......

if (i % 2 == 0) {
g.setColor(Color.white);
} else if (i % 2 == 1 && j % 2 == 1) {
g.setColor(Color.yellow);
}

你可以使用更像......的东西

if ((i + j) % 2 == 0) {
g.setColor(Color.white);
} else {
g.setColor(Color.yellow);
}

这将为您带来您想要的棋盘外观。

Test

再靠近一点。您将需要另一个 for-loop 来生成内圈,但尽量不要直接修改您当前依赖的值;)

您还可以使用if block 来定义您需要使用的背景和前景色,将它们分配给一些变量并将它们应用到绘画部分,这将为您提供更大的灵 active

关于java - java中Paint循环出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com