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 に答える