使用嵌入在JPanel

时间:2016-06-29 03:21:24

标签: java swing canvas processing renderer

在我目前的项目中,我需要在 Java Swing 应用程序中嵌入 Processing 3 画布。我可以找到P2D渲染器的一些很好的例子,它完美地工作;但是,我的应用程序使用 P3D渲染器来显示3D模型。

在互联网上彻底搜索并阅读源代码后,我可以获得解决方案无法正常运行

以下是我之前的宝贝示例 我的问题的屏幕截图(该示例使用JFrame来简化和简洁)。

public class Visualiser3D extends PApplet {

    private PeasyCam camera;

    @Override
    public void settings() {
        size(1000, 800, P3D);
    }

    @Override
    public void setup() {
        camera = new PeasyCam(this, 0, 0, 0, 1500);
    }

    @Override
    public void draw() {
        camera();        // force default coordsys
        camera.feed();   // manually set peasycam
        background(30);
        sphere(200);    // draw a sphere
    }

    public static void main (String[] args) {
        // prepare JFrame
        JFrame frame = new JFrame("Processing in JFrame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());

        // run Processing
        Visualiser3D mp3d = new Visualiser3D();
        PApplet.runSketch(new String[]{"MyPapplet 3D"}, mp3d);
        PSurfaceJOGL pSurfaceJOGL = (PSurfaceJOGL) mp3d.getSurface();
        pSurfaceJOGL.initOffscreen(mp3d);
        // add canvas to JFrame (used as a Component)
        NewtCanvasAWT canvas = (NewtCanvasAWT) pSurfaceJOGL.getComponent();
        frame.add(canvas, BorderLayout.CENTER);        
        pSurfaceJOGL.startThread();

        // display
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

以下是我得到的截图。实际处理窗口保持运行,如果我以编程方式关闭它,整个应用程序将关闭。我希望在我的Java Swing应用程序中嵌入处理画布,而不需要任何其他打开的窗口。

JFrame with inserted Processing Canvas Processing Window running

我希望你能帮助我正确地做到这一点。 非常感谢你。

0 个答案:

没有答案