/ / Как да вградите PApplet в javafx? - java, потребителски интерфейс, netbeans, javafx, обработка

Как да вградите PApplet в javafx? - java, потребителски интерфейс, netbeans, javafx, обработка

Така че аз получих своя код за обработка, който работи в Java. Но сега искам да го вградя в JavaFX за моя GUI. Как мога да го направя? Опитах да използвам следния код, но изглежда не работи.

 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);
}
}

Получавам грешка при getRootPane (). Можете ли да предложите алтернатива за него?

Отговори:

0 за отговор № 1

Защо се опитвате да получите кореновия панел на аплета? Просто добавете аплета към JPanel и след това добавете JPanel към вашия SwingNode:

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