Canvas3D 未出现在 Swing 窗口中

Posted

技术标签:

【中文标题】Canvas3D 未出现在 Swing 窗口中【英文标题】:Canvas3D not appearing in Swing window 【发布时间】:2010-09-17 16:21:38 【问题描述】:

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

Canvas3D 画布 = 新 Canvas3D(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse 宇宙 = 新的 SimpleUniverse(canvas); BranchGroup root = new BranchGroup(); root.addChild(new ColorCube()); Universe.addBranchGraph(根); Universe.getViewingPlatform().setNominalViewingTransform(); canvasPanel.add(画布);

我错过了什么? JPanel 是使用 NetBean 的可视化编辑器创建的。

【问题讨论】:

【参考方案1】:

可能你必须在面板上设置一个布局管理器,它会自动将子组件扩展到整个区域。 JPanel 默认有一个 FlowLayout,它扩展子组件。您可以通过调用来尝试使用 BorderLayout:

canvasPanel.setLayout(new BorderLayout());

【讨论】:

【参考方案2】:

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

 // 3D 画布初始化
        Canvas3D 画布 = 新 Canvas3D(SimpleUniverse.getPreferredConfiguration());
        简单宇宙宇宙 = 新的简单宇宙(画布);
        BranchGroup root = new BranchGroup();
        root.addChild(new ColorCube());
        Universe.addBranchGraph(根);
        Universe.getViewingPlatform().setNominalViewingTransform();
        canvas.setSize(100, 100);
        canvasPanel.add(canvas);

【讨论】:

以上是关于Canvas3D 未出现在 Swing 窗口中的主要内容,如果未能解决你的问题,请参考以下文章

Applet 和 Swing 未在 Eclipse 中显示组件

弹出窗口未出现在 iOS 中

Swing组件中,如何用一个BUTTON弹出一个新窗口?

Swing 窗口的初始化方式有啥区别?

Java - Swing - 充满组件的窗口

java - 如何在java swing中检查当前窗口大小?