java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javafx.embed.swing.JFXPanel
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable
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 declared in class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields declared in class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidNotifies this component that it now has a parent component.Returns the preferred size of thisJFXPanel, either previously set withJComponent.setPreferredSize(Dimension)or based on the content of the JavaFX scene attached to thisJFXPanel.getScene()Returns the JavaFX scene attached to thisJFXPanel.final 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 voidOverrides theJComponent.paintComponent(Graphics)method to paint the content of the JavaFX scene attached to thisJFXpanel.protected voidOverrides theComponent.processComponentEvent(ComponentEvent)method to dispatchComponentEvent.COMPONENT_RESIZEDevents to the JavaFX scene attached to thisJFXPanel.protected voidOverrides theComponent.processFocusEvent(FocusEvent)method to dispatch focus events to the JavaFX scene attached to thisJFXPanel.protected voidOverrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)method to processHierarchyEvent.ANCESTOR_MOVEDevents and update the JavaFX scene location to match theJFXPanellocation on the screen.protected voidOverrides theComponent.processKeyEvent(KeyEvent)method to dispatch the key event to the JavaFX scene attached to thisJFXPanel.protected voidOverrides theComponent.processMouseEvent(MouseEvent)method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel.protected voidOverrides theComponent.processMouseMotionEvent(MouseEvent)method to dispatch the mouse motion event to the JavaFX scene attached to thisJFXPanel.protected voidOverrides theComponent.processMouseWheelEvent(MouseWheelEvent)method to dispatch the mouse wheel event to the JavaFX scene attached to thisJFXPanel.voidNotifies this component that it no longer has a parent component.final 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.voidAttaches aSceneobject to display in thisJFXPanel.Methods declared in 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, getUI, 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, updateUIMethods declared in 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, validateTreeMethods declared in 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, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, 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, processHierarchyEvent, processInputMethodEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
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 Details
-
getScene
Returns the JavaFX scene attached to thisJFXPanel.- Returns:
- the
Sceneattached to thisJFXPanel
-
setScene
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- See Also:
-
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 classJComponent- Parameters:
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 classJComponent- Returns:
- a
falsevalue
-
processMouseEvent
Overrides theComponent.processMouseEvent(MouseEvent)method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel.- Overrides:
processMouseEventin classJComponent- Parameters:
e- the mouse event to dispatch to the JavaFX scene
-
processMouseMotionEvent
Overrides theComponent.processMouseMotionEvent(MouseEvent)method to dispatch the mouse motion event to the JavaFX scene attached to thisJFXPanel.- Overrides:
processMouseMotionEventin classJComponent- Parameters:
e- the mouse motion event to dispatch to the JavaFX scene
-
processMouseWheelEvent
Overrides theComponent.processMouseWheelEvent(MouseWheelEvent)method to dispatch the mouse wheel event to the JavaFX scene attached to thisJFXPanel.- Overrides:
processMouseWheelEventin classComponent- Parameters:
e- the mouse wheel event to dispatch to the JavaFX scene
-
processKeyEvent
Overrides theComponent.processKeyEvent(KeyEvent)method to dispatch the key event to the JavaFX scene attached to thisJFXPanel.- Overrides:
processKeyEventin classJComponent- Parameters:
e- the key event to dispatch to the JavaFX scene
-
processComponentEvent
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 classComponent- Parameters:
e- the component event to dispatch to the JavaFX scene
-
processHierarchyBoundsEvent
Overrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)method to processHierarchyEvent.ANCESTOR_MOVEDevents and update the JavaFX scene location to match theJFXPanellocation on the screen.- Overrides:
processHierarchyBoundsEventin classComponent- Parameters:
e- the hierarchy bounds event to process
-
processFocusEvent
Overrides theComponent.processFocusEvent(FocusEvent)method to dispatch focus events to the JavaFX scene attached to thisJFXPanel.- Overrides:
processFocusEventin classComponent- Parameters:
e- the focus event to dispatch to the JavaFX scene
-
paintComponent
Overrides theJComponent.paintComponent(Graphics)method to paint the content of the JavaFX scene attached to thisJFXpanel.- Overrides:
paintComponentin classJComponent- Parameters:
g- the Graphics context in which to paint- See Also:
-
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 classJComponent- Returns:
- 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
-
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
-