Java для конструктора Loop Inside бесконечно повторяется - PullRequest
1 голос
/ 08 сентября 2011

Итак, по какой-то причине, когда я пытаюсь использовать цикл 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);
        }
    }
}

Я включил весь потенциально важный код, потому что планирую использовать индексы шахматных квадратов для окрашивания квадратов в черный и белый. Когда я делаю это, я также получаю исключение NullPointerException. Я могу понять, почему я получаю это, учитывая следующую ошибку, но я вообще не могу понять, почему a будет печататься 0, 1 .... 62, 63 снова и снова. Я относительно новичок в Swing и абсолютно не знаю, почему он это делает. Если бы кто-нибудь мог объяснить, это было бы чрезвычайно полезно. Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2011

Не помещайте значимую инициализацию в конструктор ChessGame, а вместо этого переопределяйте frameInit. Когда вы это сделаете, также обязательно позвоните super.frameInit(). См. javadoc или этот учебник .

...