1

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

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

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

4

2 回答 2

3

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

canvasPanel.setLayout(new BorderLayout());
于 2008-10-17T05:04:47.100 回答
0

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(画布);
于 2008-10-17T03:32:47.333 回答