Java: JButton и ArrayList: добавление в JPanel из ArrayList - PullRequest
0 голосов
/ 23 февраля 2012

Итак, я получаю исключение NullPointerException в Container.add, поэтому я явно упускаю что-то, чего просто не вижу.ArrayList имеет Cell, который расширяет JButton.Метод init () находится в расширенном классе JPanel.Это мой первый вопрос, поэтому будьте суровы к формату вопроса, если я делаю это неправильно, спасибо.

    public void init() {
    int k = cells.length / 2;
    for (int i = 0; i < (cells.length / 2); i++) {
        int ID = rand.nextInt(25);
        cells[i] = new Cell(this, ID);
        cells[i + k] = new Cell(this, ID);
        k--;
        cellList.add(cells[i]);
        cellList.add(cells[i + k]);
    }

    Collections.shuffle(cellList);

    for (Cell cell : cellList) {
        add(cell);
    }
}

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Простой и простой, не k-- до cellList.add(cells[i+k])

Даже если я не вижу, что вы делаете с массивом в любом случае.

1 голос
/ 23 февраля 2012

Что если cells.length нечетно (не делится на 2, например 3, 5, 7, 15)

Учтите, что cells.length=5, тогда k=2 и ячейки [4] останутся нулевыми.

0 голосов
/ 24 февраля 2012

Вы осуждаете k, прежде чем добавлять ячейки [i + k] в список cellList. В результате ячейки [i + k] еще не были инициализированы. Попробуйте изменить его на:

    cellList.add(cells[i]);
    cellList.add(cells[i + k]);
    k--;
...