Domanda

Ho un problema quando si cerca di aggiungere un PApplet in SWT, si scopre up una finestra vuota quando si deve solo rendere il PApplet. Cioè la PApplet funziona da solo, ma non in una finestra SWT.

ho pensato che semplicemente aggiungendo il PApplet nel telaio dovrebbe inizialmente fare il trucco, utilizzando il codice SWT tutorial Eclipse. A quanto pare non è stato così facile. Ecco il mio codice, in cui MyPApplet è un PApplet personalizzata:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    Frame frame = SWT_AWT.new_Frame(composite);
    PApplet pApplet = new MyPApplet();
    frame.add(pApplet);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
}

Mi sto perdendo qualcosa?

È stato utile?

Soluzione

ho fatto questa piccola guida su come fondere elaborazione con SWT in Eclipse: http://christian.liljedahl.dk/guides/processing-and-swt -in-eclisse

Spero che questo risolva per voi.

Il mio "trucco" è quello di avere una finestra per la roba di elaborazione, e una finestra separata con l'interfaccia utente nel proprio thread.

Altri suggerimenti

Credo che tutti ti manca è pApplet.init (); vedere la documentazione per la classe: http: //dev.processing .org / riferimento / core / javadoc / elaborazione / core / PApplet.html

Credo che ci sia un modo alternativo per raggiungere questo obiettivo. Utilizzando un componente Swing come un adattatore, che ama: aggiungere il PApplet in un JComponent come JInternalFrame, quindi incorporare questo JComponent nella SWT Composite.

Ho fatto alcune pratiche su questo, e funziona benissimo ..

e anche io ho bloggato alcune sintesi su questo argomento: http://blog.csdn.net/godoorsun/article/details/6747589

(a proposito, questo articolo è scritto in :( cinese, forse si può leggere tramite Google Translator, ma il codice di esempio in questo articolo è facile da capire)

Nota: Questo funziona solo con la lavorazione dei 2.2.1 1 e non con 3+ 2

Nel codice di PO, ci sono due affermazioni mancanti:

  • Come user176840 detto, è necessario chiamare per pApplet.init() prima di aprire il guscio
  • Inoltre, per impostare un Layout alla shell come FillLayout, GridLayout, ecc, in modo da qualcosa come shell.setLayout(new FillLayout())

codice di lavoro di base:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    Frame frame = SWT_AWT.new_Frame(composite);
    PApplet pApplet = new MyPApplet();
    frame.add(pApplet);
    pApplet.init();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
}

1 Nel mio caso, stavo cercando di incorporare un applet nel progetto di SWT basato Maven, quindi posso usare solo l'ultimo (e unico) lavorazione versione disponibile per la serie 2.X in pom.xml:

    <dependency>
        <groupId>org.processing</groupId>
        <artifactId>core</artifactId>
        <version>2.2.1</version>
    </dependency>

2 Il motivo Processing 3 non è compatibile possono essere trovate qui e qui , fondamentalmente un importante ristrutturazione del codice. Ho cercato di incorporare la tela Processing nell'applicazione SWT senza successo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top