/ / ¿Cómo incrustar un PApplet en javafx? - Java, interfaz de usuario, netbeans, javafx, procesamiento

¿Cómo incrustar un parpadeo en javafx? - Java, interfaz de usuario, netbeans, javafx, procesamiento

Entonces obtuve mi código de procesamiento trabajando en Java. Pero ahora quiero incrustarlo en JavaFX para mi GUI. ¿Como lo puedo hacer? Intenté usar el siguiente código pero no parece funcionar.

 package testprocessing;
import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import java.awt.Dimension;

import java.util.concurrent.*;
import processing.core.*;

public class JavaFxApplet extends Application {
private PApplet applet = new MyProcessingSketch();
private Dimension appletSize;

@Override public void init() throws ExecutionException, InterruptedException {
applet.init();

FutureTask<Dimension> sizingTask = new FutureTask<>(() ->
applet.getRootPane().getPreferredSize()
);
SwingUtilities.invokeLater(sizingTask);
appletSize = sizingTask.get();
}

@Override public void start(Stage stage) {
final SwingNode swingNode = new SwingNode();
SwingUtilities.invokeLater(() ->
swingNode.setContent(applet.getRootPane())
);

stage.setScene(
new Scene(
new Group(swingNode),
appletSize.getWidth(), appletSize.getHeight(),
Color.BLACK
)
);
stage.show();
}

@Override public void stop() {
applet.stop();
applet.destroy();
}

public static void main(String[] args) {
launch(args);
}
}

Me sale un error en getRootPane (). ¿Me puede sugerir una alternativa?

Respuestas

0 para la respuesta № 1

¿Por qué está tratando de obtener el panel raíz del applet? Simplemente agregue el applet a un JPanel, luego agregue el JPanel a su SwingNode:

JPanel panel = new JPanel();
panel.add(applet);
swingNode.setContent(panel)