2016-04-13 2 views
-3

Как вставить PApplet в JApplet? Я хотел добавить его в JPanel внутри applet, но не смог.Вставить PApplet intp JApplet

Если кто-то из вас знает, как я могу это сделать. ??

+0

Какой код/​​подходы вы исследовали и/или попытались уже? – Castaglia

ответ

0

Начиная с обработки 3, вы больше не можете этого делать. PApplet больше не расширяет Applet, поэтому его нельзя рассматривать как компонент.

Для 95% пользователей это нормально. Апплеты все равно мертвы, поэтому вы действительно не должны их использовать. Если это вообще возможно, попробуйте выполнить развертывание с помощью Process.js.

Если вам нужно выполнить эскиз обработки из кода Java, вы должны использовать функцию PApplet.main("YourSketchNameHere"); для ее запуска. Обработка будет заботиться о окне для вас.

Если вам действительно нужно обработать PApplet в качестве компонента, то вам нужно будет пройти через его PSurface. Класс PSurface содержит функцию getNative(), которая возвращает объект, который можно рассматривать как компонент. Но это слишком много для большинства пользователей.

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.