gpt4 book ai didi

java - 用 Java 构建棋盘

转载 作者:行者123 更新时间:2023-12-01 17:18:26 24 4
gpt4 key购买 nike

我正在尝试使用java中的fillrect函数创建一个棋盘。该代码似乎不起作用,仅添加框架中的第一个语句。即使我删除了for循环(打印64个方 block )只创建 2 个添加语句,它仍然只打印其中的第一个。代码如下:

import javax.swing.* ;
import java.awt.* ;
public class ChessBoard extends JFrame {
private int i;
public ChessBoard (){
setLayout(new GridLayout(8,8,0,0));
// there are 64 squares
for(i=0; i<64 ;i++){

if ((i % 2) == 0) //switches between black and white squares
add(new DrawRect("WHITE"));
else
add(new DrawRect("BLACK"));

}
}
}
class DrawRect extends JPanel{
private String ngjyra = "BLACK";
public DrawRect(String b) {
ngjyra = b ;

}

@Override
protected void paintComponent (Graphics g){
super.paintComponent(g);
if (ngjyra.equals("BLACK"))
g.setColor(Color.BLACK);
else
g.setColor(Color.WHITE);
g.fillRect(getX(), getY(), getWidth(), getHeight());
//add the square with the specified color

}
}

最佳答案

您的图形使用相对坐标,组件左上角为零,因此绘制矩形的正确方法是

g.fillRect(0, 0, getWidth(), getHeight());

另一个问题是您的颜色分配代码使得所有黑色和所有白色单元格都产生垂直条纹。使用类似的逻辑

    for (int row = 0; row < 8; row++)
for (int col = 0; col < 8; col++) {
boolean white = (col % 2 == 0) == (row % 2 == 0);
add(new DrawRect(white ? "WHITE" : "BLACK"));
}

关于java - 用 Java 构建棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452115/

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