我正在做一个棋盘,我的想法是制作一个JPanel数组,每个框都是一个带颜色的JPanel,我有这个问题,当我做这样的任务 “chessboard [rows] [columns] = b”并且compile给了我一个例外。
为什么作业会给我一个错误?
我该如何解决?
布局网格应该放在JFrame还是JPanel?
感谢。
线程“main”中的异常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);
}
}
答案 0 :(得分:2)
你没有正确填充数组。
这个
for (int rows = 0; rows < 8; rows++) {
for (int columns = 0;columns< 8;columns++) {
JPanel b = new JPanel();
// ***** this creates a completely new array *******
chessBoardSquares = new JPanel[rows][columns];
应该是
for (int rows = 0; rows < 8; rows++) {
for (int columns = 0;columns< 8;columns++) {
JPanel b = new JPanel();
// this assigns a JPanel to an array item
chessBoardSquares[rows][columns] = new JPanel();
另外,我不知道你在哪里将瓷砖JPanel添加到你的GUI中,你会想要解决这个问题。