2014-09-14 4 views
1

내 앱에서 LWJGL을 사용하여 3D 창을 렌더링하는 스윙 구성 요소 역할을하는 클래스가 있습니다. 앱을 실행하면 Display.create()에서 오류가 발생합니다 (Parent.isDisplayable() must be true). 나는 보았고, 대부분의 사람들은 setVisible()을 호출하기 전에 Display.create()를 호출 할 때 발생한다고 말한다. 그러나 여기서는 그렇지 않습니다. 왜 오류가 발생하는지 파악할 수 없습니다.LWJGL 앱에서 캔버스를 표시 할 수 없음

내 컨트롤은 다음과 같습니다

public class WorldCanvas extends JPanel { 
    private final Canvas canvas = new Canvas(); 

    public WorldCanvas() { 
     ... 
     add(canvas, BorderLayout.CENTER); 

     try { 
      Display.setParent(canvas); 

      setVisible(true); 
      canvas.setVisible(true); 
      Display.create(); 
     } catch (LWJGLException e) { 
      e.printStackTrace(); 
      return; 
     } 
    } 
} 

그것은 JFrame의에 직접 추가되고, 그리고는, setVisible을 (참)이 추가되기 전에 또한 수 있습니다 전에 그러나이 오류가 생성되는 (JFrame에 불려 심지어 그것이 생성자에 있다고 가정하면 추가됩니다.) 이 오류가 발생하는 이유는 무엇입니까?

답변

1

Canvas를 보유하고있는 JPanel의 생성자에서 디스플레이를 만들려고합니다.
Canvas는 부모 인 WorldCanvas가 표시 될 수 없으므로 표시 할 수 없습니다.

초기화를 생성자 다음에 호출되는 메서드로 옮겨야합니다.

+0

미안 아직 답변을 드리지 못했지만, 지금까지이 프로젝트를 진행할 시간이 없었습니다. 여하튼, 그것은 문제를 해결했다, 그것은 지금 일하고있다. 나는 생성자 순서 등의 문제에 대해 잊었다. 고맙습니다! –

관련 문제