Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 网格颜色变化_Java_Chess - Fatal编程技术网

Java 网格颜色变化

Java 网格颜色变化,java,chess,Java,Chess,有人能帮我做一个象棋一样的棋盘吗。我需要将网格的颜色更改为黑白。我尝试使用if语句if(r%2=0)然后使用rectfilcolor,但它会给霍尔行着色 package grid; import java.awt.Color; import java.awt.Graphics; import javax.swing.*; public class grid extends JPanel { public static int High=640; public static in

有人能帮我做一个象棋一样的棋盘吗。我需要将网格的颜色更改为黑白。我尝试使用if语句
if(r%2=0)然后使用rectfilcolor
,但它会给霍尔行着色

package grid;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;

public class grid extends JPanel {
    public static int High=640;
    public static int width=617;
    public static int row=3,column=3;
    public static JFrame Frame;

    public static void main(String[] args) {
        grid gride= new grid();
        Frame= new JFrame();
        Frame.setSize(width, High);
        Frame.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE);
        Frame.setVisible(true);
        Frame.add(gride);
        gride.setBackground(Color.cyan);
    }

    public void paintComponent(Graphics g) {
        for (int r=0; r<4; r++) {
            g.drawLine(r*(600/3), 0, r*(600/3), 600);

            for (int c=0; c<4; c++) {
                 g.drawLine(0,(c*(600/3)), 600, (c*(600/3)));
            }
        }
    }
}
封装网格;
导入java.awt.Color;
导入java.awt.Graphics;
导入javax.swing.*;
公共类网格扩展JPanel{
公共静态int高=640;
公共静态整数宽度=617;
公共静态int行=3,列=3;
公共静态JFrame;
公共静态void main(字符串[]args){
grid gride=新网格();
Frame=新的JFrame();
框架。设置尺寸(宽度、高度);
Frame.setDefaultCloseOperation(关闭时退出Frame);
Frame.setVisible(true);
Frame.add(grid);
网格背景(颜色:青色);
}
公共组件(图形g){

对于(int r=0;r,请始终记住调用super.paintComponent(g)以正确初始化JPanel画布

您可以使用
g.fillRect(x,y,width,height)
方法绘制每个象棋单元格。使用
g.setColor(color)
更改绘画的颜色

因此:

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Color[] colors = {Color.BLACK, Color.WHITE};
    int lengthUnit = (600 / 3);
    for (int row = 0; row < 3; ++ row) {
        for (int col = 0; col < 3; ++col) {
            g.setColor(colors[(row + col) % 2]); // alternate between black and white
            g.fillRect(row * lengthUnit, col * lengthUnit, lengthUnit, lengthUnit);
        }
    }
}
公共组件(图形g){
超级组件(g);
Color[]colors={Color.BLACK,Color.WHITE};
int lengthUnit=(600/3);
对于(int行=0;行<3;++行){
用于(整数列=0;列<3;++列){
g、 setColor(颜色[(行+列)%2]);//在黑白之间交替
g、 fillRect(行*长度单位,列*长度单位,长度单位,长度单位);
}
}
}
编辑:您就快到了,只需要删除嵌套for循环中的一些冗余语句

for (int r = 0; r < 4; r++) {
        for (int c = 0; c < 4; c++) {
            if ((c + r) % 2 != 0) {
                g.setColor(Color.black);
            } else {
                g.setColor(Color.white);
            }
            g.fillRect(r * (600 / 3), (c * (600 / 3)), 200, 200);
        }
    }
for(int r=0;r<4;r++){
对于(int c=0;c<4;c++){
如果((c+r)%2!=0){
g、 设置颜色(颜色为黑色);
}否则{
g、 setColor(Color.white);
}
g、 fillRect(r*(600/3),(c*(600/3)),200200);
}
}

@user3500147 1)你永远不会改变这幅画的颜色2)你只使用画线,而画线不会画出一个区域我在第二次for循环后有了这个区域。如果(r%2==0){g.fillrect(r*60,0,r*60400)}@user3500147您能更新您的问题以便我知道到底发生了什么吗?我添加了已编辑的问题,您可以在创建加号上看到它。让我们来看看。
for (int r = 0; r < 4; r++) {
        for (int c = 0; c < 4; c++) {
            if ((c + r) % 2 != 0) {
                g.setColor(Color.black);
            } else {
                g.setColor(Color.white);
            }
            g.fillRect(r * (600 / 3), (c * (600 / 3)), 200, 200);
        }
    }