Canvas3D没有出现在Swing窗口中

我试图在Swing JPanel中插入一个Canvas3D对象,但代码似乎没有工作(即没有任何反应):

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

我错过了什么? JPanel是使用NetBean的Visual Editor创建的。

您可能需要在面板上设置布局管理器,这会自动将子组件扩展到整个区域。 默认情况下,JPanel有一个FlowLayout,它不会扩展子组件。 您可以通过调用以下方法尝试BorderLayout:

canvasPanel.setLayout(new BorderLayout()); 

Canvas3D需要传递给它的大小; 从SimpleUniverse设置首选配置是不够的。 就我而言,这意味着这段代码:

  // 3Dcanvas初始化
         Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
         SimpleUniverse universe = new SimpleUniverse(canvas);
         BranchGroup root = new BranchGroup();
         root.addChild(new ColorCube());
         universe.addBranchGraph(根);
         universe.getViewingPlatform()setNominalViewingTransform();
         canvas.setSize(100,100);
         canvasPanel.add(帆布);