嵌入PApplet intp JApplet

时间:2016-04-13 23:15:25

标签: java applet processing

如何将PApplet嵌入JApplet? 我想将其添加到JPanel内的applet,但我无法。

如果你们中的任何人知道如何做到这一点。 ??

2 个答案:

答案 0 :(得分:0)

从处理3开始,您无法再执行此操作。 PApplet不再延伸Applet,因此无法将其视为组件。

对于95%的用户,这没关系。无论如何,小程序已经死了,所以你真的不应该使用它们。如果可能的话,您应该尝试使用Processing.js进行部署。

如果您需要从Java代码执行Processing sketch,那么您应该使用PApplet.main("YourSketchNameHere");函数来启动它。处理将为您处理窗口。

如果您确实需要将PApplet视为一个组件,那么您将不得不通过其PSurfacePSurface类包含getNative()函数,该函数返回可被视为组件的对象。但对于大多数处理用户来说,这太过分了。

答案 1 :(得分:0)

在处理3之前,正如@Kevin所解释的那样,这段代码应该对你有用。因此,如果您的问题是针对理解遗留代码,那么您需要了解以下内容:

import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPApplet extends PApplet implements ActionListener{
    @Override
    public void setup() {
        super.setup();
        // setup
    }

    @Override
    public void draw() {
        // my draw code
    }
}

public class PAppletDemo {
    public static void main(String[] args) {
        final JFrame frame = new JFrame("PApplet in Java Application");
            JPanel panel = new JPanel();

            //create an instance of your processing applet
            final MyPApplet applet = new MyPApplet();

            applet.init();
            panel.add(applet); // From processing 3, this will give you error that applet is not a Component

        frame.add(panel);
        frame.setSize(applet.getSize().width, applet.getSize().height +200);
        frame.setVisible(true);
    }
}

为了避免这种情况,您需要使用PSurface getNative()函数。请参阅example and discussion given on this link