2008-10-17 3 views
1

스윙 창에 표시되지 Canvas3D하지만 코드가 작동하지 않는 것 :내가 스윙 JPanel의 내부 Canvas3D 개체를 삽입하려고 시도하고

 
     Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); 
     SimpleUniverse universe = new SimpleUniverse(canvas); 
     BranchGroup root = new BranchGroup(); 
     root.addChild(new ColorCube()); 
     universe.addBranchGraph(root); 
     universe.getViewingPlatform().setNominalViewingTransform(); 
     canvasPanel.add(canvas); 

나는 무엇을 놓치고? JPanel은 NetBean의 비주얼 편집기를 사용하여 만들어졌습니다.

답변

3

아마 당신은 자동으로 전체 영역에 하위 구성 요소를 확장 패널에 레이아웃 매니저를 설정해야합니다. JPanel에는 기본적으로 FlowLayout이 있으며 은 하위 구성 요소를 확장하지 않습니다. 다음과 같이 호출하여 BorderLayout을 시도 할 수 있습니다.

canvasPanel.setLayout(new BorderLayout()); 
+0

아, 완벽하게 작동합니다. 고맙습니다! –

0

Canvas3D에는 크기가 전달되어야합니다. SimpleUniverse에서 기본 구성을 설정하는 것만으로는 충분하지 않습니다. 이 코드를 의미하는 내 경우에는 :

  // 3D canvas initialization 
     Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); 
     SimpleUniverse universe = new SimpleUniverse(canvas); 
     BranchGroup root = new BranchGroup(); 
     root.addChild(new ColorCube()); 
     universe.addBranchGraph(root); 
     universe.getViewingPlatform().setNominalViewingTransform(); 
     canvas.setSize(100, 100); 
     canvasPanel.add(canvas);
관련 문제