Module javafx.swing

Class SwingNode

java.lang.Object
javafx.scene.Node
javafx.embed.swing.SwingNode
All Implemented Interfaces:
Styleable, EventTarget

public class SwingNode extends Node
This class is used to embed a Swing content into a JavaFX application. The content to be displayed is specified with the setContent(javax.swing.JComponent) method that accepts an instance of Swing JComponent. The hierarchy of components contained in the JComponent instance should not contain any heavyweight components, otherwise SwingNode may fail to paint it. The content gets repainted automatically. All the input and focus events are forwarded to the JComponent instance transparently to the developer.

Here is a typical pattern which demonstrates how SwingNode can be used:

     public class SwingFx extends Application {

         @Override
         public void start(Stage stage) {
             final SwingNode swingNode = new SwingNode();
             createAndSetSwingContent(swingNode);

             StackPane pane = new StackPane();
             pane.getChildren().add(swingNode);

             stage.setScene(new Scene(pane, 100, 50));
             stage.show();
         }

         private void createAndSetSwingContent(final SwingNode swingNode) {
             SwingUtilities.invokeLater(new Runnable() {
                 @Override
                 public void run() {
                     swingNode.setContent(new JButton("Click me!"));
                 }
             });
         }

         public static void main(String[] args) {
             launch(args);
         }
     }
 
Since:
JavaFX 8.0