在我目前的项目中,我需要在 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应用程序中嵌入处理画布,而不需要任何其他打开的窗口。
我希望你能帮助我正确地做到这一点。 非常感谢你。