以下代码:
// Adds game button container
Object[][] gameButtons = new Object[3][3];
// Adds game buttons to game button container
Arrays.fill(gameButtons, new JButton[3][3]);
for (int i = 0; i < gameButtons.length; i++) {
for (int j = 0; j < gameButtons[i].length; j++) {
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
gameButtons[i][j][k][l] = new JButton();******
}
}
}
}
给我一个错误: 表达式的类型必须是数组类型,但它解析为Object。如何初始化JButtons?
编辑:我忘了澄清。这条错误被抛到了****** ****** 请注意,******不在我的代码中。 编辑2:我尝试了Logan的修复,但它仍然无效:for (Object[] row : gameButtons)
Arrays.fill(row, new JButton[3][3]);
for (int i = 0; i < gameButtons.length; i++) {
for (int j = 0; j < gameButtons[i].length; j++) {
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
gameButtons[i][j][k][l] = new JButton();
}
}
}
}
同样的错误,同一个地方。
答案 0 :(得分:1)
gameButtons[i][j]
的类型为Object
,无法将其编入索引。您必须先将其转换为JButton[][]
类型:
for (int i = 0; i < gameButtons.length; i++) {
for (int j = 0; j < gameButtons[i].length; j++) {
// cast it to an array type before accessing
JButton[][] subArray = (JButton[][])(gameButtons[i][j]);
for (int k = 0; k < 3; k++)
for (int l = 0; l < 3; l++)
subArray[k][l] = new JButton();
}
}
答案 1 :(得分:0)
我相信你不需要for循环。如果我理解你的问题,你可以这样做:
//create a sub array
Object[][] subArray = new Object[3][3];
// create game button container
Object[][] gameButtons = new Object[3][3];
// Adds buttons to sub array
Arrays.fill(subArray, new JButton[3][3]);
// Adds sub array to game button container
Arrays.fill(gameButtons, subArray);
答案 2 :(得分:-1)
docs帮助了我很多。
您也可以使用GUI制造商,例如NetBeans IDE中的GUI制造商,它比自己编写代码简单得多。