2012-08-29 2 views
2

이 클래스의 생성에 문제가 있습니까? 나는 다른 클래스의 JPanel에로의 인스턴스를 추가하는 것을 시도하고있다 :다른 클래스의 패널 인스턴스를 부모 패널에 추가

calculator2 test = new calculator2(); 
    JPanel panel3 = new JPanel(new BorderLayout()); 
    panel3.add(test, BorderLayout.SOUTH); 

내가 런타임 오류의 유형을 얻을 그나마 :

public class calculator2 extends JPanel { 
    public calculator2() { 
     JPanel x = new JPanel(); 
     x.setLayout(new GridLayout(0,5)); 

     x.add(new JLabel()); 
     x.add(new JButton("<<")); 
     x.add(new JLabel()); 
     x.add(new JButton(">>")); 
     x.add(new JLabel()); 
    } 
} 

이것은 내가 그것을 사용하려고 시도하고있는 무슨이다 , 그냥 나타나지 않습니다. 같은 클래스에있는 calculator2 클래스의 코드를 넣으면 코드의 두 번째 부분에서 사용하고 있습니다. 당신의 배려에 감사합니다.

이것은 실제로 예입니다. 약 25 개의 구성 요소가있는 전체 클래스가 actionlisteners 등을 사용하며 위의 방법을 사용하여 패널에 추가하려고합니다.

답변

5

여기에서는 패널을 어디에도 추가하지 않고 만들었습니다. 생성자에서 다른 JPanel의 새 인스턴스를 만드는 대신 JPanel에서 상속 된 부모 메서드를 사용해보십시오.

이것은 x라는 인스턴스를 제거하기 만하면됩니다.

public class calculator2 extends JPanel { 
    public calculator2() { 
    super(); 
    setLayout(new GridLayout(0,5)); 

    add(new JLabel()); 
    add(new JButton("<<")); 
    add(new JLabel()); 
    add(new JButton(">>")); 
    add(new JLabel()); 
} 
} 
+2

또한, 당신이 패널 3와 함께 무엇을하고 있는지 명확하지, 당신은 – MadProgrammer

+0

+1 좋은 포스트 dispayable입니다 :) 내 생각이 잘못되었습니다 방법을 이해 – MadProgrammer

+1

컨테이너에 추가해야합니다. 나는 JPanel의 인스턴스를 생성 할 필요가 없다. 왜냐하면 모든 메소드와 생성자가 extends 키워드를 사용하여 상속되기 때문이다. 감사! –

관련 문제