Java 画布3D不显示在Swing窗口中

Java 画布3D不显示在Swing窗口中,java,swing,java-3d,Java,Swing,Java 3d,我试图在Swing JPanel中插入一个Canvas3D对象,但代码似乎不起作用(即,什么也没有发生): Canvas3D canvas=新的Canvas3D(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse宇宙=新SimpleUniverse(画布); BranchGroup root=新建BranchGroup(); addChild(新的ColorCube()); universe.addBranchGraph(根);

我试图在Swing JPanel中插入一个Canvas3D对象,但代码似乎不起作用(即,什么也没有发生):

Canvas3D canvas=新的Canvas3D(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse宇宙=新SimpleUniverse(画布); BranchGroup root=新建BranchGroup(); addChild(新的ColorCube()); universe.addBranchGraph(根); universe.getViewingPlatform().setNominalViewingTransform(); canvasPanel.add(画布);
我错过了什么?JPanel是使用NetBean的可视化编辑器创建的。

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); //三维画布初始化 Canvas3D canvas=新的Canvas3D(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse宇宙=新SimpleUniverse(画布); BranchGroup root=新建BranchGroup(); addChild(新的ColorCube()); universe.addBranchGraph(根); universe.getViewingPlatform().setNominalViewingTransform(); canvas.setSize(100100)
canvasPanel.add(画布) 可能您必须在面板上设置布局管理器,它会自动将子组件扩展到整个区域。默认情况下,JPanel有一个FlowLayout,它不展开子组件。您可以通过调用以下命令来尝试BorderLayout:

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