Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ошибка при инициализации и выводе массива


Автор: snorkee 25.3.2005, 23:39
Код

    
JPanel DataPanel = new JPanel();
DataPanel.setLayout(new GridLayout(40,15));
    
    JLabel[][] array =new JLabel[40][15]; 
    int i;
    int j;
    
    for(i=0;i<40;i++){
     for (j=0;j<15;j++){
     
      array[i][j].setText("data");
      DataPanel.add(array[i][j]);
     }
    }


Вот такой простой код выкидывает мне

Exception in thread "main" java.lang.NullPointerException
at Hash.<init>(Hash.java:65)
at Hash.main(Hash.java:99)


Мне всего-то нужно чтоб создалась таблица лэйблов 40х15 с текстом "data".
Мне никак н сообразить что такое...вроде инициализировано всё...

Автор: LSD 26.3.2005, 00:10
Приведи код полность и пометь строки 65 и 99.

Автор: Kurt 26.3.2005, 01:05
Небольшое предположение. Не видя полного листинга кода, я могу ошибаться, но все же..
Вот, ты создаешь массив лейблов, а потом "общаешься" с каждым элементом массива (setText() и т.п.). А ты проинициализировал эти объекты? Ну, то есть, ты создал двумерный массив ссылок на JLabel, а сами объекты ты создал? Т.o. где-то в коде, ПЕРЕД обращением к конкретному элементу массива должно быть что-то вроде

Код
for(i=0;i<40;i++){    
     for (j=0;j<15;j++){
         array[i][j] = new JLabel();
};


У тебя есть подобный код?

Автор: snorkee 26.3.2005, 12:00
значит этого не достаточно?

Код

    JLabel[][] array =new JLabel[40][15]; 



у меня такой инициализации как ты посоветовал как раз и не было smile сейчас тогда попробю переделать.



ДОБАВЛЕНО век живи-век учись smile заработало, спасибо!

Автор: Kurt 27.3.2005, 00:36
Приходите еще.
Немного поясню, т.к. это довольно типичная ошибка.
Когда ты выполняешь
Код
JLabel[][] array =new JLabel[40][15]; 

создается двумерный массив ССЫЛОК на объекты JLabel, но сами объекты еще не созданы. Их нужно создавать вручную - т.е. для каждого элемента массива следует выполнить new JLabel(..). Иначе, программа будет вылетать в exception - ведь будут вызываются методы и поля несозданного, неинициализированного объекта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)