我想創建一個在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