2010-08-13 4 views
0

Код ниже не подлежит компиляции, но, однако, во время выполнения он говорит об ошибке java.lang.NullPointerException в строке в строке с номером 20 и 41. Также мне немного любопытно узнать, что такое Null Pointer Exception, что происходит во время выполнения?Исключение Null Pointer в программе

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class Tool 
    { 
    private JToolBar toolbar1; 
    private JToolBar toolbar2; 
    private JPanel panel; 
    public Tool() 
     { 
     JFrame frame= new JFrame(); 
     panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS)); 
     JButton one = new JButton("one"); 
     JButton two = new JButton("two"); 
     JButton three = new JButton("three"); 
     JButton four = new JButton("four"); 
      toolbar1 = new JToolBar(); 
      toolbar2 = new JToolBar(); 
     toolbar1.add(one); 
     toolbar1.add(two); 
     toolbar2.add(three); 
     toolbar2.add(four); 
     toolbar1.setAlignmentX(0); 
     toolbar2.setAlignmentX(0); 
     panel.add(toolbar1); 
     panel.add(toolbar2); 
     frame.add(panel,BorderLayout.NORTH); 

     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
     frame.setSize(400,300); 
     frame.setTitle("ZOOP"); 
     frame.setVisible(true); 
     } 




     public static void main (String args[]) 
     { 
     Tool zoop = new Tool(); 
     } 


    } 
+0

http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html + сотни вопросы здесь. – Bozho

+0

ОК, я обновил программу, но почему мои панели инструментов прикрепляются к ней, как я могу отключить эту функцию, пожалуйста, скажите мне некоторые обычно используемые конструкторы для JToolBar – subanki

ответ

5

Вы передаете null на следующих методах ....

 panel.add(toolbar1); 
    panel.add(toolbar2); 

Это потому, что не были инициализированы следующие.

private JToolBar toolbar1; 
private JToolBar toolbar2; 

Определение NullPointerException

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

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение поля нулевого объекта.
  • Принимая длину null, как если бы это был массив.
  • Доступ или изменение слотов нулевого значения, как если бы это был массив.
  • Бросание нуль, как если бы это было значение Throwable.

Инициализировать это

JToolBar toolbar1 = new JToolBar(SwingConstants.HORIZONTAL); 
JToolBar toolbar2 = new JToolBar(SwingConstants.VERTICAL); 
1

Initialize панелей инструментов

private JToolBar toolbar1; 
private JToolBar toolbar2; 

Вы пытаетесь добавить кнопки панелей инструментов, прежде чем вы их создали. Самое простое решение:

private JToolBar toolbar1 = new JToolBar(); 
private JToolBar toolbar2 = new JToolBar(); 
2

Вы на самом деле не выделеноtoolbar1 или toolbar2. Вам нужно сделать что-то вроде:

toolbar1 = new JToolBar(); 
toolbar2 = new JToolBar ("other toolbar"); 

так же, как вы делали с:

JButton one = new JButton("one"); 

Причина вы получаете исключение, потому что вы пытаетесь разыменования его и там ничего нет.

См. here для документов JToolBar.

+0

wow thnx для ссылки – subanki

1

Вы никогда не должны поймать NullPointerException, вы всегда должны написать свою программу таким образом, чтобы это не произошло. Примените необходимые нулевые проверки условий, упомянутых «Элитные джентльмены» :)

Смежные вопросы