2013-09-26 1 views
0

У меня есть JComponent ссылка как JComponent allComp[]; Теперь я хочу, чтобы каждый элемент этого массива имеет другой тип компонента, как показано ниже,Добавление различного типа компонентов в опорный массив JComponent

allComp[0] = new JComboBox();

allComp[1] = new JButton();

allComp[2] = new JMonthChooser();

Я пытаюсь и получаю исключение Null Pointer. Это возможно?? Если возможно, как? Пожалуйста, помогите мне в этом выпуске. Благодаря заранее

+0

Вы не забыли инициализировать массив, т.е. allComp = new JComponent [3]? Я также рекомендовал бы использовать Список вместо;) – MadProgrammer

+0

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

+0

Спасибо, всегда :) –

ответ

0

Вы, вероятно, не инициализирован allComp и это null.

JComponent allComp[] = new JComponent[MAX_COMPONENTS]; 

В любом случае, желательно использовать List вместо массива, если вы заранее количество компонентов, не знаете.

List<JComponent> allComp = new ArrayList<>(); 
allComp.add(new JComboBox()); 
allComp.add(new JButton()); 
allComp.add(new JMonthChooser()); 
0

Вам нужно создать сам объект массива:

JComponent[] allComp = new JComponent[ARRAYSIZE]; 
0

Я предполагаю, что вы не инициализируется массив со

int arraySize = 20; 
JComponent allComp[] = new JComponent[arraySize]; 

делать что-то вроде

JComponent allComp[] 

только «объявляет» объект, который является своего рода как обещание «где-то в этом коде я буду использовать этот объект, но я не решил, что я хочу, чтобы он был еще, поэтому я оставляю его неопределенным ».

«Инициализация» - это то, что вам нужно сделать, чтобы создать объект. Обычно вы делаете это с помощью

new 

ключевое слово.