package test; import java.awt.Dimension; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.ProgressBar; import javafx.scene.control.ProgressBarBuilder; import javafx.scene.layout.VBox; import javafx.scene.layout.VBoxBuilder; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class SwingWithFXProgressbar { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Swing Window"); frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.getContentPane().add(createFXPanel()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(800, 100)); frame.pack(); frame.setVisible(true); } private JFXPanel createFXPanel() { final JFXPanel fxp = new JFXPanel(); Platform.runLater(new Runnable() { @Override public void run() { ProgressBar pb = ProgressBarBuilder.create().prefWidth(600).build(); // indeterminate progressbar VBox vb = VBoxBuilder.create().visible(true).children(pb).build(); // high CPU load whether visible or not Group g = new Group(vb); Scene s = new Scene(g); fxp.setScene(s); } }); return fxp; } }); } }