【发布时间】:2011-11-12 16:29:00
【问题描述】:
因此,由于某种原因,当我尝试使用 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 比较陌生,完全不知道为什么会这样。如果有人能解释这将非常有帮助。谢谢。
【问题讨论】:
-
该代码没有表现出您描述的行为。你显然已经删掉了那个部分。 (此外,除非您删除
implements ActionListener,否则它不会编译。) -
我猜你有一些代码在循环中调用
new ChessGame();。你为什么不使用调试器来看看发生了什么? -
添加一个空的 public void actionPerformed(ActionEvent arg0) 方法后,我的工作。输出从 0 到 63
-
是的,我刚刚意识到我声明了一个 ChessGame 类的对象数组。它实际上并没有无限循环,但需要 30 秒才能结束。我猜这里的答案就是将窗口的无参数构造函数变成一个带有未使用参数的构造函数来区分两者。谢谢加布。
标签: java constructor for-loop repeat infinite