【发布时间】:2011-10-31 14:46:55
【问题描述】:
我的程序中有四列按钮。分配新按钮时,按钮在列之间移动。有没有一种方法可以创建 1 个数组列表数组,而不是声明 4 个单独的数组列表来存储按钮,这样我就可以简单地遍历数组?
我试过List<JButton>[] lists = new ArrayList<JButton>[5];
但这行不通。我错过了什么?
编辑:
for(int i = 0; i < 5; i++){
if(choiceList.getSelectedIndex() == i){
if(btnPersons[nameList.getSelectedIndex()].getX() == column[i]){
JOptionPane.showMessageDialog(null, "Error - Name already present in the column.","", 1);
}else{
for(int j = 0; j < 5; j++){
if(lists[j].get(i) != null){
lists[j].remove(btnPersons[nameList.getSelectedIndex()]);
}
}
lists[i].add(btnPersons[nameList.getSelectedIndex()]);
lists[i].get(i).setBounds(column[i], ROWS[i], 125, 20);
//reloadLocations();
}
}
}
这是我目前的代码。一旦选择了新列,它就会检查按钮所在的列表并将其删除,然后将其添加到新列表中。但我的新问题是使用 lists[i] 将不再有效。 Idk 如何使用此声明正确循环遍历我的数组列表:
List<ArrayList<JButton>> lists = new ArrayList<ArrayList<JButton>>();
【问题讨论】:
-
嗯,
List[] lists = new ArrayList[5];可以编译并且对我来说很好,尽管我会使用泛型并会创建一个 List[5] 数组。也许错误在其他地方。你的代码有什么问题?您看到了哪些错误消息? -
请描述它是如何不起作用的。它应该可以工作。
-
也许你能告诉我们什么是“行不通”?这篇文章看起来很有趣,如果你提供更多信息,它可能会成为一篇很棒的文章。
-
Eclipse 强调了“新的 ArrayList
[5];”部分并说:“无法创建 ArrayList 的通用数组” -
虽然你不能
new一个泛型数组,但你可以这样做:ArrayList<JButton>[] lists = (ArrayList<JButton>[]) Array.newInstance(ArrayList.class, 5);