SwingNode (JavaFX 17)

Module javafx.swing
Package javafx.embed.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

- - ### Property Summary

    - ### Properties declared in class javafx.scene.Node

      `accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible`

  - ### Field Summary

    - ### Fields declared in class javafx.scene.Node

      `BASELINE_OFFSET_SAME_AS_HEIGHT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SwingNode()` | Constructs a new instance of `SwingNode`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `JComponent` | `getContent()` | Returns the `JComponent` instance attached to this `SwingNode`.
    `double` | `maxHeight​(double width)` | Returns the `SwingNode`'s maximum height for use in layout calculations.
    `double` | `maxWidth​(double height)` | Returns the `SwingNode`'s maximum width for use in layout calculations.
    `double` | `minHeight​(double width)` | Returns the `SwingNode`'s minimum height for use in layout calculations.
    `double` | `minWidth​(double height)` | Returns the `SwingNode`'s minimum width for use in layout calculations.
    `double` | `prefHeight​(double width)` | Returns the `SwingNode`'s preferred height for use in layout calculations.
    `double` | `prefWidth​(double height)` | Returns the `SwingNode`'s preferred width for use in layout calculations.
    `void` | `resize​(double width, double height)` | Invoked by the `SwingNode`'s parent during layout to set the `SwingNode`'s width and height.
    `void` | `setContent​(JComponent content)` | Attaches a `JComponent` instance to display in this `SwingNode`.

    - ### Methods declared in class javafx.scene.Node

      `accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBaselineOffset, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClassCssMetaData, getClip, getContentBias, getCssMetaData, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isResizable, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty`

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods declared in interface javafx.css.Styleable

      `getStyleableNode, getStyleClass`

- - ### Constructor Detail

    - #### SwingNode

          public SwingNode()

      Constructs a new instance of `SwingNode`.

  - ### Method Detail

    - #### setContent

          public void setContent​(JComponent content)

      Attaches a `JComponent` instance to display in this `SwingNode`.

      The method can be called either on the JavaFX Application thread or the Event Dispatch thread. Note however, that access to a Swing component must occur from the Event Dispatch thread according to the Swing threading restrictions.

      Parameters:
        `content` - a Swing component to display in this `SwingNode`
      See Also:
        `EventQueue.isDispatchThread()`, `Platform.isFxApplicationThread()`

    - #### getContent

          public JComponent getContent()

      Returns the `JComponent` instance attached to this `SwingNode`.

      The method can be called either on the JavaFX Application thread or the Event Dispatch thread. Note however, that access to a Swing component must occur from the Event Dispatch thread according to the Swing threading restrictions.

      Returns:
        the Swing component attached to this `SwingNode`
      See Also:
        `EventQueue.isDispatchThread()`, `Platform.isFxApplicationThread()`

    - #### resize

          public void resize​(double width,
                             double height)

      Invoked by the `SwingNode`'s parent during layout to set the `SwingNode`'s width and height. Applications should not invoke this method directly. If an application needs to directly set the size of the `SwingNode`, it should set the Swing component's minimum/preferred/maximum size constraints which will be propagated correspondingly to the `SwingNode` and it's parent will honor those settings during layout.
      Overrides:
        `resize` in class `Node`
      Parameters:
        `width` - the target layout bounds width
        `height` - the target layout bounds height
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`, `Node.autosize()`, `Node.minWidth(double)`, `Node.minHeight(double)`, `Node.prefWidth(double)`, `Node.prefHeight(double)`, `Node.maxWidth(double)`, `Node.maxHeight(double)`, `Node.getLayoutBounds()`

    - #### prefWidth

          public double prefWidth​(double height)

      Returns the `SwingNode`'s preferred width for use in layout calculations. This value corresponds to the preferred width of the Swing component.
      Overrides:
        `prefWidth` in class `Node`
      Parameters:
        `height` - the height that should be used if preferred width depends on it
      Returns:
        the preferred width that the node should be resized to during layout
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`, `Node.autosize()`

    - #### prefHeight

          public double prefHeight​(double width)

      Returns the `SwingNode`'s preferred height for use in layout calculations. This value corresponds to the preferred height of the Swing component.
      Overrides:
        `prefHeight` in class `Node`
      Parameters:
        `width` - the width that should be used if preferred height depends on it
      Returns:
        the preferred height that the node should be resized to during layout
      See Also:
        `Node.getContentBias()`, `Node.autosize()`

    - #### maxWidth

          public double maxWidth​(double height)

      Returns the `SwingNode`'s maximum width for use in layout calculations. This value corresponds to the maximum width of the Swing component.
      Overrides:
        `maxWidth` in class `Node`
      Parameters:
        `height` - the height that should be used if maximum width depends on it
      Returns:
        the maximum width that the node should be resized to during layout
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`

    - #### maxHeight

          public double maxHeight​(double width)

      Returns the `SwingNode`'s maximum height for use in layout calculations. This value corresponds to the maximum height of the Swing component.
      Overrides:
        `maxHeight` in class `Node`
      Parameters:
        `width` - the width that should be used if maximum height depends on it
      Returns:
        the maximum height that the node should be resized to during layout
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`

    - #### minWidth

          public double minWidth​(double height)

      Returns the `SwingNode`'s minimum width for use in layout calculations. This value corresponds to the minimum width of the Swing component.
      Overrides:
        `minWidth` in class `Node`
      Parameters:
        `height` - the height that should be used if minimum width depends on it
      Returns:
        the minimum width that the node should be resized to during layout
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`

    - #### minHeight

          public double minHeight​(double width)

      Returns the `SwingNode`'s minimum height for use in layout calculations. This value corresponds to the minimum height of the Swing component.
      Overrides:
        `minHeight` in class `Node`
      Parameters:
        `width` - the width that should be used if minimum height depends on it
      Returns:
        the minimum height that the node should be resized to during layout
      See Also:
        `Node.isResizable()`, `Node.getContentBias()`