1

因此,由于某种原因,当我尝试使用 for 循环来初始化棋盘中的面板时,它实际上循环了循环本身。换句话说,它不会永远持续下去,而是会一次又一次地开始和完成。

package chessgame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChessGame extends JFrame implements ActionListener{

    public static final int WIDTH=800;
    public static final int HEIGHT=800;

    public static void main(String[] args) {
        ChessGame gui = new ChessGame();
        gui.setVisible(true);
    }
    public ChessGame(){
        super("Chess Game Demo");
        setSize(WIDTH, HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(8,8));
        JPanel[] chessSquares = new JPanel[64];
        for (int a=0;a<64;a++){
            System.out.println(a);
        }
    }
}

我已经包含了所有可能相关的代码,因为我计划使用 chessSquares 的索引来为黑色和白色的方块着色。当我这样做时,我也会得到一个 NullPointerException。我可以理解为什么会出现以下错误,但我完全不明白为什么 a 会一遍又一遍地打印 0, 1....62, 63 。我对 Swing 比较陌生,完全不知道为什么会这样。如果有人能解释这将非常有帮助。谢谢。

4

1 回答 1

0

不要将有意义的初始化放在ChessGame的构造函数中,而是覆盖frameInit。当你这样做时,也一定要打电话super.frameInit()。请参阅javadoc本教程

于 2011-09-08T05:12:24.510 回答