【问题标题】:Using NetBeans IDE 6.7 with J3D's Canvas3D Container将 NetBeans IDE 6.7 与 J3D 的 Canvas3D 容器一起使用
【发布时间】:2009-07-07 21:26:48
【问题描述】:

我一直告诉自己这应该很简单,但我完全迷失了。首先让我说我是 NetBeans IDE 的新手,我使用它是出于必要。我对它还不是很了解。

我已经成功地为我的应用程序设计了我的主窗口。应用程序的右侧本质上是一个通向三维空间的大窗口,可将数据集上的某些变换可视化。我搜索了调色板和调色板管理器,甚至尝试从 JAR 手动将 Canvas3D 组件添加到调色板,但我仍然无法得到它。

我真的很希望能够将此组件拖放到我的应用程序中,并且直观地说,这似乎是可能的。我在 Mac OS X 上;我关于 NetBeans 的输出说明了更多信息。

产品版本:NetBeans IDE 6.7(内部版本 200906241340)
爪哇:1.5.0_19; Java HotSpot(TM) 客户端虚拟机 1.5.0_19-137
系统:在 i386 上运行的 Mac OS X 版本 10.5.7;麦克罗曼; zh_CN (nb)
用户目录:/Users/dremelofdeath/.netbeans/6.7

提前感谢您帮助我——我真的很感激。

【问题讨论】:

    标签: java netbeans canvas netbeans6.7 java-3d


    【解决方案1】:

    Canvas3D 是一个重量级组件,这意味着它使用本地对等组件连接到 DirectX 或 OpenGL,因此这种组件可能无法用于拖放。虽然您可以尝试扩展 JPanel。

    您可以使用 BoderLayout 轻松手动设置布局。

    MyFrame extends JFrame {
    
    etc...
    
     Container container = getContentPane();
     container.setName("main.container");
     container.setLayout(new BorderLayout());
    
     container.add(new MyCanvasPanel(), BorderLayout.CENTER);
    
    }  
    
    // this could probably be added to the palete
    public class MyCanvasPanel extends JPanel {
    
        SimpleUniverse su;
        Canvas3D canvas3D;
    
      public MyCanvasPanel() {
            canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
            add("Center", canvas3D);
            su = new SimpleUniverse(canvas3D);
      }
    
    }
    

    【讨论】:

    • 感谢您的建议。不是一个完整的解决方案,但你指出了我正确的方向。 :)
    【解决方案2】:

    完整的初学者指南:

    1. 将 java.awt.Container 添加到 JFrame。 (选择 Beans\java.awt.Container)。 让该容器的名称为 canvasContainer。
    2. 向类中添加一个公共变量。 (我假设类名是 MyJFrame)

      公共 Canvas3D canvas3D;

    3. 框架类的构造如下:

      公共 MyJFrame() {
      初始化组件();
      }

      编辑如下:

      公共 MyJFrame() {
      初始化组件();
      canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
      canvasContainer.add(canvas3D, "Center");
      canvas3D.setSize(canvasContainer.getWidth(), canvasContainer.getHeight());
      }

    4. 在调整大小时向容器添加侦听器:(通常在调整窗口大小时)
      选择容器\Properties\Events\componentResized\canvasContainerComponentResized
      输入以下代码:

      如果 (canvas3D!=null)
      canvas3D.setSize(canvasContainer.getWidth(), canvasContainer.getHeight());

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2010-10-15
      • 2015-04-28
      相关资源
      最近更新 更多