用Java创建一个棋盘

用Java创建一个棋盘,java,Java,我做到了这一点,但它没有显示任何输出 import acm.program.*; import acm.graphics.*; import java.awt.*; public class Test5 extends GraphicsProgram { public void run() { GRect rect = new GRect(0,0,50,50); for(int i=1;i<=8;i++){ for(int j=1;j<=8;j++)

我做到了这一点,但它没有显示任何输出

import acm.program.*;
import acm.graphics.*;

import java.awt.*;

public class Test5 extends GraphicsProgram {

    public void run() {
    GRect rect = new GRect(0,0,50,50);

for(int i=1;i<=8;i++){

    for(int j=1;j<=8;j++)
      {
        if(((i + j) % 2 == 0))
          {
             rect.setColor(Color.WHITE);}
         else
          {
            rect.setColor(Color.BLACK); }
            add(rect);
          }
          }
      } 
   }
导入acm.program.*;
导入acm图形。*;
导入java.awt.*;
公共类Test5扩展了GraphicsProgram{
公开募捐{
GRect rect=新的GRect(0,0,50,50);
对于(int i=1;i一种简单的方法:

检查
i
j
是否都是偶数,或者
i
j
是否都是奇数

// Fill black.
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());

// Color red tiles.
g.setColor(Color.RED);
for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
        if (i % 2 == j % 2) {
            g.fillRect(i * tileSize, j * tileSize, tileSize, tileSize);
        }
    }
}
更好的是,您可以比较
i
j
的均匀性/奇异性,以获得相等性

// Fill black.
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());

// Color red tiles.
g.setColor(Color.RED);
for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
        if (i % 2 == j % 2) {
            g.fillRect(i * tileSize, j * tileSize, tileSize, tileSize);
        }
    }
}
//填充黑色。
g、 设置颜色(颜色为黑色);
g、 fillRect(0,0,getWidth(),getHeight());
//给红色瓷砖上色。
g、 setColor(Color.RED);
对于(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
如果(i%2==j%2){
g、 fillRect(i*tileSize,j*tileSize,tileSize,tileSize);
}
}
}

导入java.awt.Color;
导入java.awt.Container;
导入java.awt.Dimension;
导入java.awt.Graphics;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类棋盘扩展JPanel{
私有整数大小;
公共棋盘(整数大小){
此.setPreferredSize(新维度(大小,大小));
这个。大小=大小;
}
@凌驾
受保护组件(图形g){
超级组件(g);
int tileSize=大小/8;
//填充黑色。
g、 设置颜色(颜色为黑色);
g、 fillRect(0,0,getWidth(),getHeight());
//给红色瓷砖上色。
g、 setColor(Color.RED);
对于(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
如果(i%2==j%2){
g、 fillRect(i*tileSize,j*tileSize,tileSize,tileSize);
}
}
}
}
公共静态void main(字符串[]args){
JFrame f=新的JFrame();
容器c=新棋盘(400);
f、 setContentPane(c);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 setLocationRelativeTo(空);
f、 包装();
f、 setVisible(真);
}
}

我想你忘了创建和添加每个rect,将对new的调用移动到第二个循环中。你没有真正显示太多…什么是
图形程序
?那是你编写的一个类吗?是的,它是一个类,我已经添加了rect…btstill@Rogue:GraphicsProgram是ACM库中的一个类,ACM库由某些用户使用学校教授Java。它基于旧版本的Swing,并试图大大简化图形编程。@HovercraftFullOfEels啊,谢谢!更简单,
Color c=(i%2==j%2)?深色:浅色;
谢谢你的提示。好吧,我不想每个单元格都上色,只是每隔一个。因此,如果背景已经是对面瓷砖的颜色,那么切换颜色是没有意义的。