2013-04-23 4 views
0

확장 클래스가 JFrame입니다. 생성자에서는 getContentPane()으로 전화하여 Container에 저장합니다. 그러나 System.out.println(container)이 "null"을 인쇄하고 container.setLayout(new BorderLayout)을 호출하면 null 포인터 예외가 발생하므로 getContentPane()은 null을 반환하는 것처럼 보입니다.getContentPane()이 null을 반환합니다.

일부 예제 코드 : 클래스 (즉 this.setLayout()를) 자체에 setLayout를 호출 또한

public class Example extends JFrame implements ... { 
    public Example(){ 
     Container container = getContentPane(); 
     System.out.println(container); //prints "null" 
     container.setLayout(new BorderLayout()); //throws nullpointerexception 

는 또한 NullPointerException 발생하지만 제대로 문서를 이해한다면 단순히 위임이 프레임에 호출 때문입니다 프레임의 contentPane. Eclipse를 사용하고 있으며 경고 또는 오류를 지적하지 않습니다. 예외는 클래스가 인스턴스화 된 두 레벨 (main(), setLayout() 호출까지 추적하기 때문에)별로 도움이되지 않습니다.

필자는 필자의 전체 코드를 게시 할 수 있지만, 클래스 할당을위한 것이기 때문에 마음에 들지 않을 것입니다. 안티 치트 소프트웨어가 플래그를 지정하는 것을 원치 않습니다.

+3

그래도 더 많은 것을 볼 필요가 있습니다 : P – MadProgrammer

+2

* "필요한 경우 전체 코드를 게시 할 수 있습니다."* 전체 코드 대신 [SSCCE] (http://sscce.org)를 게시하십시오. 컨텐츠 구획. 완성 된 코드를 제출할 때까지 유사성은 미미합니다. 'public class Example extends JFrame implements ... {'.. 그러나 이것은 아마도 코드가 단순히''JFrame'' **을 확장해야하는 경우가 아닙니다. 단순히 하나의 인스턴스를 사용하는 것과 반대되는 것입니다. –

+0

콘솔에 다음 오류가 표시됩니다. javax.swing.JPanel [null.contentPane, 0,0,0x0, invalid, layout = javax.swing.JRootPane $ 1, alignmentX = 0.0, alignmentY = 0.0, border =, flags = 9, maximumSize =, minimumSize =, preferredSize = ] – chintan

답변

1

발견. 이클립스에서 클래스를 만들었을 때, 많은 클래스가 자동 생성되었고, 그 중 하나는 getContentPane()이었다. 자동 생성 된 메서드는 단순히 null을 반환하여 내 문제를 일으켰습니다. 나는 자동 생성 된 모든 메소드를 없애고 지금 작동한다.

관련 문제