如何在JavaFX中嵌入Piccolo2D画布?
如何将如何在JavaFX中嵌入Piccolo2D画布?,java,swing,javafx,javafx-8,piccolo,Java,Swing,Javafx,Javafx 8,Piccolo,如何将Piccolo2D画布嵌入JavaFX 我认为它应该通过,因为Piccolo有Swing控件名 此方法适用于Swing: public static void main(String[] args) { PPath ellipse = PPath.createEllipse(100,100,400,200); PCanvas canvas = new PCanvas(); canvas.getLayer().addChild(ellips
Piccolo2D
画布嵌入JavaFX
我认为它应该通过,因为Piccolo
有Swing
控件名
此方法适用于Swing:
public static void main(String[] args) {
PPath ellipse = PPath.createEllipse(100,100,400,200);
PCanvas canvas = new PCanvas();
canvas.getLayer().addChild(ellipse);
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(canvas, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocation(0, 0);
frame.setTitle("PCanvas_Try01");
frame.setVisible(true);
}
但这不适用于JavaFX
:
@Override
public void start(Stage stage) throws Exception {
PPath ellipse = PPath.createEllipse(100, 100, 400, 200);
PCanvas canvas = new PCanvas();
canvas.getLayer().addChild(ellipse);
SwingNode swingNode = new SwingNode();
swingNode.setContent(canvas);
Group group = new Group();
group.getChildren().add(swingNode);
Scene scene = new Scene(group);
stage.setTitle("PCanvas_Try02");
stage.setScene(scene);
stage.show();
}
组可能存在一些问题。以下似乎有效:
import edu.umd.cs.piccolo.nodes.PPath;
import edu.umd.cs.piccolo.PCanvas;
import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class DemoPiccoloFx extends Application {
@Override
public void start(Stage stage) {
PPath ellipse = PPath.createEllipse(100, 100, 400, 200);
PCanvas canvas = new PCanvas();
canvas.getLayer().addChild(ellipse);
SwingNode swingNode = new SwingNode();
swingNode.setContent(canvas);
StackPane pane = new StackPane();
pane.getChildren().add(swingNode);
stage.setScene(new Scene(pane, 500, 300));
stage.setTitle("PCanvas_Try02");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
为什么要使用PSwingCanvas?它的目的看起来是相反的@SuzanCioc是的,正确,在这种情况下不需要,它可以与PCanvas
配合使用。但是如果您要添加PSwing
节点,那么应该有PSwingCanvas
。我更新了答案以删除它。