我想创建一个在java中使用fillrect函数的国际象棋棋盘。代码似乎没有工作,并且只添加了框架中的第一条语句。即使我删除了for循环(可打印64个方格),并只有2添加语句,它仍然只打印第一them.Here的是代码:在Java中建立国际象棋板
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
}
}
“只添加框架中的第一条语句”是什么意思?为什么不能为单元格的JPanel调用setBackground()? – StanislavL
如果我删除循环,并作出2添加语句(黑色和白色Rect consistion)它只增加了框架的第一条语句。我正在读一本书学习Java和它的一个练习,要求填写。而我想解决这个特殊的问题。 – Lind
与您的问题没有关系,但为什么'DrawRect'不能直接保存'Color'?如果你绝对需要这种方式,为什么一个字符串,而不是一个枚举或int? – JensG