Class JFXPanel
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javafx.embed.swing.JFXPanel
All Implemented Interfaces:
public class JFXPanel extends JComponent
JFXPanel is a component to embed JavaFX content into Swing applications. The content to be displayed is specified with the setScene(javafx.scene.Scene) method that accepts an instance of JavaFX Scene. After the scene is assigned, it gets repainted automatically. All the input and focus events are forwarded to the scene transparently to the developer. There are some restrictions related to JFXPanel. As a Swing component, it should only be accessed from the event dispatch thread, except the setScene(javafx.scene.Scene) method, which can be called either on the event dispatch thread or on the JavaFX application thread.
Here is a typical pattern how JFXPanel can used:
public class Test {
private static void initAndShowGUI() {
// This method is invoked on Swing thread
JFrame frame = new JFrame("FX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setVisible(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}
Since:
JavaFX 2.0
See Also:
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor and Description JFXPanel()Creates a newJFXPanelobject.
-
Method Summary
All MethodsInstance MethodsConcrete Methods Modifier and Type Method and Description voidaddNotify()Notifies this component that it now has a parent component.InputMethodRequestsgetInputMethodRequests()DimensiongetPreferredSize()Returns the preferred size of thisJFXPanel, either previously set withJComponent.setPreferredSize(Dimension)or based on the content of the JavaFX scene attached to thisJFXPanel.ScenegetScene()Returns the JavaFX scene attached to thisJFXPanel.booleanisOpaque()JFXPanel's opacity is controlled by the JavaFX content which is displayed in this component, so this method overridesJComponent.isOpaque()to always return afalsevalue.protected voidpaintComponent(Graphics g)Overrides theJComponent.paintComponent(Graphics)method to paint the content of the JavaFX scene attached to thisJFXpanel.protected voidprocessComponentEvent(ComponentEvent e)Overrides theComponent.processComponentEvent(ComponentEvent)method to dispatchComponentEvent.COMPONENT_RESIZEDevents to the JavaFX scene attached to thisJFXPanel.protected voidprocessFocusEvent(FocusEvent e)Overrides theComponent.processFocusEvent(FocusEvent)method to dispatch focus events to the JavaFX scene attached to thisJFXPanel.protected voidprocessHierarchyBoundsEvent(HierarchyEvent e)Overrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)method to processHierarchyEvent.ANCESTOR_MOVEDevents and update the JavaFX scene location to match theJFXPanellocation on the screen.protected voidprocessHierarchyEvent(HierarchyEvent e)protected voidprocessInputMethodEvent(InputMethodEvent e)protected voidprocessKeyEvent(KeyEvent e)Overrides theComponent.processKeyEvent(KeyEvent)method to dispatch the key event to the JavaFX scene attached to thisJFXPanel.protected voidprocessMouseEvent(MouseEvent e)Overrides theComponent.processMouseEvent(MouseEvent)method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel.protected voidprocessMouseMotionEvent(MouseEvent e)Overrides theComponent.processMouseMotionEvent(MouseEvent)method to dispatch the mouse motion event to the JavaFX scene attached to thisJFXPanel.protected voidprocessMouseWheelEvent(MouseWheelEvent e)Overrides theComponent.processMouseWheelEvent(MouseWheelEvent)method to dispatch the mouse wheel event to the JavaFX scene attached to thisJFXPanel.voidremoveNotify()Notifies this component that it no longer has a parent component.voidsetOpaque(boolean opaque)JFXPanel's opacity is controlled by the JavaFX content which is displayed in this component, so this method overridesJComponent.setOpaque(boolean)to only accept afalsevalue.voidsetScene(Scene newScene)Attaches aSceneobject to display in thisJFXPanel.-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
Constructor Detail
-
JFXPanel
public JFXPanel()
Creates a newJFXPanelobject.Implementation note: when the first
JFXPanelobject is created, it implicitly initializes the JavaFX runtime. This is the preferred way to initialize JavaFX in Swing.
-
-
Method Detail
-
getScene
public Scene getScene()
Returns the JavaFX scene attached to thisJFXPanel.Returns:
the
Sceneattached to thisJFXPanel
-
setScene
public void setScene(Scene newScene)
Attaches aSceneobject to display in thisJFXPanel. This method can be called either on the event dispatch thread or the JavaFX application thread.Parameters:
newScene- a scene to display in thisJFXpanel
-
setOpaque
public final void setOpaque(boolean opaque)
JFXPanel's opacity is controlled by the JavaFX content which is displayed in this component, so this method overridesJComponent.setOpaque(boolean)to only accept afalsevalue. If this method is called with atruevalue, no action is performed.Overrides:
setOpaquein classJComponentParameters:
opaque- must befalse
-
isOpaque
public final boolean isOpaque()
JFXPanel's opacity is controlled by the JavaFX content which is displayed in this component, so this method overridesJComponent.isOpaque()to always return afalsevalue.Overrides:
isOpaquein classJComponentReturns:
a
falsevalue
-
processMouseEvent
protected void processMouseEvent(MouseEvent e)
Overrides theComponent.processMouseEvent(MouseEvent)method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel.Overrides:
processMouseEventin classJComponentParameters:
e- the mouse event to dispatch to the JavaFX scene
-
processMouseMotionEvent
protected void processMouseMotionEvent(MouseEvent e)
Overrides theComponent.processMouseMotionEvent(MouseEvent)method to dispatch the mouse motion event to the JavaFX scene attached to thisJFXPanel.Overrides:
processMouseMotionEventin classJComponentParameters:
e- the mouse motion event to dispatch to the JavaFX scene
-
processMouseWheelEvent
protected void processMouseWheelEvent(MouseWheelEvent e)
Overrides theComponent.processMouseWheelEvent(MouseWheelEvent)method to dispatch the mouse wheel event to the JavaFX scene attached to thisJFXPanel.Overrides:
processMouseWheelEventin classComponentParameters:
e- the mouse wheel event to dispatch to the JavaFX scene
-
processKeyEvent
protected void processKeyEvent(KeyEvent e)
Overrides theComponent.processKeyEvent(KeyEvent)method to dispatch the key event to the JavaFX scene attached to thisJFXPanel.Overrides:
processKeyEventin classJComponentParameters:
e- the key event to dispatch to the JavaFX scene
-
processComponentEvent
protected void processComponentEvent(ComponentEvent e)
Overrides theComponent.processComponentEvent(ComponentEvent)method to dispatchComponentEvent.COMPONENT_RESIZEDevents to the JavaFX scene attached to thisJFXPanel. The JavaFX scene object is then resized to match theJFXPanelsize.Overrides:
processComponentEventin classComponentParameters:
e- the component event to dispatch to the JavaFX scene
-
processHierarchyBoundsEvent
protected void processHierarchyBoundsEvent(HierarchyEvent e)
Overrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)method to processHierarchyEvent.ANCESTOR_MOVEDevents and update the JavaFX scene location to match theJFXPanellocation on the screen.Overrides:
processHierarchyBoundsEventin classComponentParameters:
e- the hierarchy bounds event to process
-
processHierarchyEvent
protected void processHierarchyEvent(HierarchyEvent e)
Overrides:
processHierarchyEventin classComponent
-
processFocusEvent
protected void processFocusEvent(FocusEvent e)
Overrides theComponent.processFocusEvent(FocusEvent)method to dispatch focus events to the JavaFX scene attached to thisJFXPanel.Overrides:
processFocusEventin classComponentParameters:
e- the focus event to dispatch to the JavaFX scene
-
processInputMethodEvent
protected void processInputMethodEvent(InputMethodEvent e)
Overrides:
processInputMethodEventin classComponent
-
paintComponent
protected void paintComponent(Graphics g)
Overrides theJComponent.paintComponent(Graphics)method to paint the content of the JavaFX scene attached to thisJFXpanel.Overrides:
paintComponentin classJComponentParameters:
g- the Graphics context in which to paintSee Also:
-
getPreferredSize
public Dimension getPreferredSize()
Returns the preferred size of thisJFXPanel, either previously set withJComponent.setPreferredSize(Dimension)or based on the content of the JavaFX scene attached to thisJFXPanel.Overrides:
getPreferredSizein classJComponentReturns:
prefSize this
JFXPanelpreferred size
-
addNotify
public void addNotify()
Notifies this component that it now has a parent component. When this method is invoked, the chain of parent components is set up with KeyboardAction event listeners.Overrides:
addNotifyin classJComponent
-
getInputMethodRequests
public InputMethodRequests getInputMethodRequests()
Overrides:
getInputMethodRequestsin classComponent
-
removeNotify
public void removeNotify()
Notifies this component that it no longer has a parent component. When this method is invoked, any KeyboardActions set up in the the chain of parent components are removed.Overrides:
removeNotifyin classJComponent
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.