массив массивов java - PullRequest
       6

массив массивов java

7 голосов
/ 21 августа 2011

В моей программе четыре столбца кнопок.Кнопки перемещаются между столбцами при назначении новых.Вместо того, чтобы объявлять 4 отдельных массива для хранения кнопок, есть ли способ создать 1 массив арралистов, чтобы я мог просто перемещаться по нему?

Я пробовал 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();
                }
            }
        }

Это мой код в настоящее время. Как только новый столбец выбран, он проверяет, в каком списке была кнопка и удаляет ее, затем добавляетв новый список.Но моя новая проблема заключается в том, что использование списков [i] больше не будет работать.ИДК, как правильно перебрать мой список arraylists с помощью этого объявления:

List<ArrayList<JButton>> lists = new ArrayList<ArrayList<JButton>>(); 

Ответы [ 4 ]

5 голосов
/ 21 августа 2011

Вы должны вести список списков объектов JButton:

List<List<JButton>> lists = new ArrayList<List<JButton>>();
// populate (replace with your code)
lists.add(Arrays.asList(new JButton("list 1, button 1"), new JButton("list 1, button 2")));
lists.add(Arrays.asList(new JButton("list 2, button 3"), new JButton("list 2, button 4")));
lists.add(Arrays.asList(new JButton("list 3, button 5"), new JButton("list 3, button 6")));
lists.add(Arrays.asList(new JButton("list 4, button 7"), new JButton("list 4, button 8")));

// iterate
for(List<JButton> subList : lists) {
    for(JButton button : subList) {
        System.out.println(button.getText());
    }
}
4 голосов
/ 13 июля 2012

Приведу пример того, что сработало для меня / говорилось выше.

    List []oArrayOfArrayList = new ArrayList[2];

    List<String> oStringList = new ArrayList<String>();
    List<Integer> oIntegerList = new ArrayList<Integer>();

    oArrayOfArrayList[0] = oStringList ;
    oArrayOfArrayList[1] = oIntegerList ;
3 голосов
/ 21 августа 2011

Вы не можете создавать массивы из классов с общими параметрами.

Вы можете либо составить список из списка, либо отказаться от общих параметров.

2 голосов
/ 21 августа 2011

Вы не можете вызвать новый оператор для универсального объекта, потому что во время выполнения тип был удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...