- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javafx.embed.swing.JFXPanel
-
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
public class JFXPanel extends JComponent
JFXPanel
is a component to embed JavaFX content into Swing applications. The content to be displayed is specified with thesetScene(javafx.scene.Scene)
method that accepts an instance of JavaFXScene
. 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 thesetScene(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:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
-
Field Summary
-
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
-
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
-
-
Constructor Summary
Constructors Constructor Description JFXPanel()
Creates a newJFXPanel
object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNotify()
Notifies this component that it now has a parent component.InputMethodRequests
getInputMethodRequests()
Gets the input method request handler which supports requests from input methods for this component.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
.Scene
getScene()
Returns the JavaFX scene attached to thisJFXPanel
.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 afalse
value.protected void
paintComponent(Graphics g)
Overrides theJComponent.paintComponent(Graphics)
method to paint the content of the JavaFX scene attached to thisJFXpanel
.protected void
processComponentEvent(ComponentEvent e)
Overrides theComponent.processComponentEvent(ComponentEvent)
method to dispatchComponentEvent.COMPONENT_RESIZED
events to the JavaFX scene attached to thisJFXPanel
.protected void
processFocusEvent(FocusEvent e)
Overrides theComponent.processFocusEvent(FocusEvent)
method to dispatch focus events to the JavaFX scene attached to thisJFXPanel
.protected void
processHierarchyBoundsEvent(HierarchyEvent e)
Overrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)
method to processHierarchyEvent.ANCESTOR_MOVED
events and update the JavaFX scene location to match theJFXPanel
location on the screen.protected void
processHierarchyEvent(HierarchyEvent e)
Processes hierarchy events occurring on this component by dispatching them to any registeredHierarchyListener
objects.protected void
processInputMethodEvent(InputMethodEvent e)
Processes input method events occurring on this component by dispatching them to any registeredInputMethodListener
objects.protected void
processKeyEvent(KeyEvent e)
Overrides theComponent.processKeyEvent(KeyEvent)
method to dispatch the key event to the JavaFX scene attached to thisJFXPanel
.protected void
processMouseEvent(MouseEvent e)
Overrides theComponent.processMouseEvent(MouseEvent)
method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel
.protected void
processMouseMotionEvent(MouseEvent e)
Overrides theComponent.processMouseMotionEvent(MouseEvent)
method to dispatch the mouse motion event to the JavaFX scene attached to thisJFXPanel
.protected void
processMouseWheelEvent(MouseWheelEvent e)
Overrides theComponent.processMouseWheelEvent(MouseWheelEvent)
method to dispatch the mouse wheel event to the JavaFX scene attached to thisJFXPanel
.void
removeNotify()
Notifies this component that it no longer has a parent component.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 afalse
value.void
setScene(Scene newScene)
Attaches aScene
object to display in thisJFXPanel
.-
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, 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, 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
-
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 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, updateUI
-
-
-
-
Method Detail
-
getScene
public Scene getScene()
Returns the JavaFX scene attached to thisJFXPanel
.- Returns:
- the
Scene
attached to thisJFXPanel
-
setScene
public void setScene(Scene newScene)
Attaches aScene
object 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:
EventQueue.isDispatchThread()
,Platform.isFxApplicationThread()
-
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 afalse
value. If this method is called with atrue
value, no action is performed.- Overrides:
setOpaque
in classJComponent
- Parameters:
opaque
- must befalse
- See Also:
JComponent.isOpaque()
-
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 afalse
value.- Overrides:
isOpaque
in classJComponent
- Returns:
- a
false
value - See Also:
JComponent.setOpaque(boolean)
-
processMouseEvent
protected void processMouseEvent(MouseEvent e)
Overrides theComponent.processMouseEvent(MouseEvent)
method to dispatch the mouse event to the JavaFX scene attached to thisJFXPanel
.- Overrides:
processMouseEvent
in classJComponent
- Parameters:
e
- the mouse event to dispatch to the JavaFX scene- See Also:
Component.processMouseEvent(java.awt.event.MouseEvent)
-
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:
processMouseMotionEvent
in classJComponent
- Parameters:
e
- the mouse motion event to dispatch to the JavaFX scene- See Also:
MouseEvent
-
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:
processMouseWheelEvent
in classComponent
- Parameters:
e
- the mouse wheel event to dispatch to the JavaFX scene- See Also:
MouseWheelEvent
,MouseWheelListener
,Component.addMouseWheelListener(java.awt.event.MouseWheelListener)
,Component.enableEvents(long)
-
processKeyEvent
protected void processKeyEvent(KeyEvent e)
Overrides theComponent.processKeyEvent(KeyEvent)
method to dispatch the key event to the JavaFX scene attached to thisJFXPanel
.- Overrides:
processKeyEvent
in classJComponent
- Parameters:
e
- the key event to dispatch to the JavaFX scene- See Also:
KeyEvent
,KeyListener
,KeyboardFocusManager
,DefaultKeyboardFocusManager
,Component.processEvent(java.awt.AWTEvent)
,Component.dispatchEvent(java.awt.AWTEvent)
,Component.addKeyListener(java.awt.event.KeyListener)
,Component.enableEvents(long)
,Component.isShowing()
-
processComponentEvent
protected void processComponentEvent(ComponentEvent e)
Overrides theComponent.processComponentEvent(ComponentEvent)
method to dispatchComponentEvent.COMPONENT_RESIZED
events to the JavaFX scene attached to thisJFXPanel
. The JavaFX scene object is then resized to match theJFXPanel
size.- Overrides:
processComponentEvent
in classComponent
- Parameters:
e
- the component event to dispatch to the JavaFX scene- See Also:
ComponentEvent
,ComponentListener
,Component.addComponentListener(java.awt.event.ComponentListener)
,Component.enableEvents(long)
-
processHierarchyBoundsEvent
protected void processHierarchyBoundsEvent(HierarchyEvent e)
Overrides theComponent.processHierarchyBoundsEvent(HierarchyEvent)
method to processHierarchyEvent.ANCESTOR_MOVED
events and update the JavaFX scene location to match theJFXPanel
location on the screen.- Overrides:
processHierarchyBoundsEvent
in classComponent
- Parameters:
e
- the hierarchy bounds event to process- See Also:
HierarchyEvent
,HierarchyBoundsListener
,Component.addHierarchyBoundsListener(java.awt.event.HierarchyBoundsListener)
,Component.enableEvents(long)
-
processHierarchyEvent
protected void processHierarchyEvent(HierarchyEvent e)
Description copied from class:Component
Processes hierarchy events occurring on this component by dispatching them to any registeredHierarchyListener
objects.This method is not called unless hierarchy events are enabled for this component. Hierarchy events are enabled when one of the following occurs:
- An
HierarchyListener
object is registered viaaddHierarchyListener
. - Hierarchy events are enabled via
enableEvents
.
Note that if the event parameter is
null
the behavior is unspecified and may result in an exception.- Overrides:
processHierarchyEvent
in classComponent
- Parameters:
e
- the hierarchy event- See Also:
HierarchyEvent
,HierarchyListener
,Component.addHierarchyListener(java.awt.event.HierarchyListener)
,Component.enableEvents(long)
- An
-
processFocusEvent
protected void processFocusEvent(FocusEvent e)
Overrides theComponent.processFocusEvent(FocusEvent)
method to dispatch focus events to the JavaFX scene attached to thisJFXPanel
.- Overrides:
processFocusEvent
in classComponent
- Parameters:
e
- the focus event to dispatch to the JavaFX scene- See Also:
FocusEvent
,FocusListener
,KeyboardFocusManager
,Component.addFocusListener(java.awt.event.FocusListener)
,Component.enableEvents(long)
,Component.dispatchEvent(java.awt.AWTEvent)
-
processInputMethodEvent
protected void processInputMethodEvent(InputMethodEvent e)
Description copied from class:Component
Processes input method events occurring on this component by dispatching them to any registeredInputMethodListener
objects.This method is not called unless input method events are enabled for this component. Input method events are enabled when one of the following occurs:
- An
InputMethodListener
object is registered viaaddInputMethodListener
. - Input method events are enabled via
enableEvents
.
Note that if the event parameter is
null
the behavior is unspecified and may result in an exception.- Overrides:
processInputMethodEvent
in classComponent
- Parameters:
e
- the input method event- See Also:
InputMethodEvent
,InputMethodListener
,Component.addInputMethodListener(java.awt.event.InputMethodListener)
,Component.enableEvents(long)
- An
-
paintComponent
protected void paintComponent(Graphics g)
Overrides theJComponent.paintComponent(Graphics)
method to paint the content of the JavaFX scene attached to thisJFXpanel
.- Overrides:
paintComponent
in classJComponent
- Parameters:
g
- the Graphics context in which to paint- See Also:
isOpaque()
-
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:
getPreferredSize
in classJComponent
- Returns:
- prefSize this
JFXPanel
preferred size - See Also:
JComponent.setPreferredSize(java.awt.Dimension)
,ComponentUI
-
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.
-
getInputMethodRequests
public InputMethodRequests getInputMethodRequests()
Description copied from class:Component
Gets the input method request handler which supports requests from input methods for this component. A component that supports on-the-spot text input must override this method to return anInputMethodRequests
instance. At the same time, it also has to handle input method events.- Overrides:
getInputMethodRequests
in classComponent
- Returns:
- the input method request handler for this component,
null
by default - See Also:
Component.addInputMethodListener(java.awt.event.InputMethodListener)
-
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.
-
-