【发布时间】:2015-05-08 19:52:10
【问题描述】:
我正在做一个棋盘,我的想法是制作一个 JPanel 数组,每个盒子都是一个带有颜色的 JPanel,我遇到的问题是,当我进行这样的分配时 "chessboard [ rows ] [columns ] = b" 和 compile 给了我一个例外。
为什么作业给我一个错误?
我该如何解决?
是布局网格,应该放在JFrame还是JPanel中?
谢谢。
线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0
头等舱
public class ChessBoard extends JPanel {
private JPanel[][] chessBoardSquares = new JPanel[8][8];
private final JPanel tile;
public ChessBoard () {
tile = new JPanel();
tile.setLayout(new GridLayout(8, 8));
for (int rows = 0; rows < 8; rows++) {
for (int columns = 0;columns< 8;columns++) {
JPanel b = new JPanel();
chessBoardSquares = new JPanel[rows][columns];
if ((rows+columns +1)%2 == 0){
b.setBackground(Color.WHITE);
chessBoardSquares[rows][columns] = b;
}
tile.add( chessBoardSquares [rows][columns]);
}
}
}
}
主要
public class example {
public static void main(String[] args) {
JFrame window = new JFrame();
ChessBoard chessBoard = new ChessBoard();
window.add( chessBoard );
window.setVisible(true);
}
}
【问题讨论】:
-
您多久初始化一次
chessBoardSquares?我认为如果你在内部 for 循环中执行它有点太多了。 ` -
老师告诉我应该在循环中保存内存。我已经看到错误并解决了,非常感谢。