2012-10-21 2 views
0

jpanels 배열을 만들려고하는데 null pointer exception이 있습니다.Java - JPanel의 배열로 인해 null 포인터 예외가 발생합니다.

여기가 코드의 일부입니다. 여기서 cartPpanel입니다.

JPanel[] p2 = new JPanel[10]; 
    p2[0].setPreferredSize(new Dimension(700, 40)); 
    p2[0].setMaximumSize(p2[0].getPreferredSize()); 
    p2[0].setLayout(new GridLayout(1,5,1,1)); 
    p2[0].add(new JLabel("text")); 
    p2[0].add(new JLabel("text")); 
    p2[0].add(new JLabel("text")); 
    p2[0].add(new JLabel("text")); 
    p2[0].setBackground(Color.CYAN); 

    cartP.add(p2[0]); 

쇼핑 웹 사이트와 마찬가지로 장바구니를 만드는 데 사용합니다. 내가 그 예외가 왜 1

어떤 생각 : 여기

Exception in thread "main" java.lang.NullPointerException 
at storeapp.Cart.gui(Cart.java:59) 
at storeapp.Cart.<init>(Cart.java:29) 
at storeapp.Cart.main(Cart.java:157) 

자바 결과 .. 예외인가?

답변

1

는이 같은 : 오브젝트의

for(int i = 0; i < 10; i++){ 
    p2[i] = new JPanel(); 
} 

배열 및 기본 유형의 배열 다른 방식으로 행동 각 JPanel을 초기화해야합니다.

배열 유형이 intfloat 인 요소를 new이있는 힙에 만들 필요는 없지만 개체 배열을 초기화해야합니다.

JPanel[] panels = new JPanel[10]은 JPanel에 대해 10 개의 UNINITIALIZED 개체를 만들거나 배열을 초기화합니다. 초기화되지 않았으므로 각 JPanel에 new을 호출하여 별도로 초기화해야합니다.

+0

가 _ "... 10 UNINITIALIZED 개체를 만듭니다"

코드는 _ 잘못된 문장이다. 초기화되지 않은 변수와 참조 만 "초기화되지 않은 객체"와 같은 것은 없습니다. 또한 "JPanel에서 new"를 호출하는 것은 오도 된/부정확합니다. _ 메소드를 호출하거나 연산자를 기존 객체에 적용하지 않습니다. –

3

JPanel[] p2 = new JPanel[10]; 

nullJPanel 포인터 배열을 생성하기 때문에. 배열을 사용하기 전에 배열의 각 요소를 초기화해야합니다.

for (int i=0; i<p2.length; i++) { 
    p2[i] = new JPanel(/* snip */); 
} 

임의 배열 초기화 동작과 일치한다. 달리 할당 될 때까지 배열 요소는 배열 유형의 기본값을가집니다. for any object type, the default value is null.

1
JPanel[] p2 = new JPanel[10]; 

for (int i = 0; i < p2.length; i++){ 
    p2[i] = new JPanel(); 
} 

....

+0

일부 정보도 추가 할 수 있습니다. 왜 그런 변화를 할 것인가? –

+0

내 게시물을 판단 할 때 저자 코드 위에 있어야합니다. –

관련 문제