/* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ //package helloworld; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.util.Duration; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; /** * @author kcr */ public class HelloJFXPanel { public HelloJFXPanel() { JFrame frame = new JFrame("Hello JFXPanel"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setLayout(new BorderLayout()); JPanel swingPanel = new JPanel(); swingPanel.setLayout(new FlowLayout()); frame.getContentPane().add(swingPanel, BorderLayout.NORTH); JButton swingButton = new JButton("A Swing Button"); swingPanel.add(swingButton); // Create javafx panel final JFXPanel fxPanel = new JFXPanel(); fxPanel.setPreferredSize(new Dimension(550,400)); frame.getContentPane().add(fxPanel, BorderLayout.CENTER); // create JavaFX scene createScene(fxPanel); // show frame frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } private void createScene(final JFXPanel fxPanel) { System.err.println("createScene: calling Platform.runLater"); Platform.runLater(new Runnable() { public void run() { System.err.println("Platform.runLater :: run"); Group root = new Group(); final Scene scene = new Scene(root); scene.setFill(Color.LIGHTGREEN); Rectangle rect = new Rectangle(); rect.setX(25); rect.setY(40); rect.setWidth(100); rect.setHeight(50); rect.setFill(Color.RED); root.getChildren().add(rect); final Timeline timeline = new Timeline(); timeline.setCycleCount(Timeline.INDEFINITE); timeline.setAutoReverse(true); final KeyValue kv = new KeyValue(rect.xProperty(), 200); final KeyFrame kf = new KeyFrame(Duration.millis(500), kv); timeline.getKeyFrames().add(kf); timeline.play(); // add scene to panel fxPanel.setScene(scene); } }); System.err.println("PlatformImpl.runLater returns"); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new HelloJFXPanel(); } }); } }