- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- javafx.scene.control.ButtonBar
-
- Все реализованные интерфейсы:
-
Styleable,EventTarget,Skinnable
public class ButtonBar extends Control
ButtonBar по сути являетсяHBoxс дополнительной функциональностью для размещения кнопок в соответствии с операционной системой. Другими словами, любой узел может быть помечен (через методsetButtonData(Node, ButtonData)), размещен внутри ButtonBar (через списокgetButtons()), и затем будет позиционироваться относительно всех других узлов в списке кнопок на основе их меток, а также на основе общегоbutton order, указанного для ButtonBar.Единый размер кнопок
По умолчанию все кнопки в ButtonBar имеют одинаковый размер, то есть все кнопки имеют ширину самой широкой кнопки. Можно отказаться от этого для каждой кнопки, вызвав метод
setButtonUniformSize(Node, boolean)со значением false.Если кнопка исключена из единого размера, она также исключается из изменения размера относительно предпочтительного размера, и также исключается из процесса измерения, поэтому ее размер не влияет на максимальный размер, рассчитанный для всех кнопок в ButtonBar.
Скриншоты
Поскольку ButtonBar имеет встроенную поддержку Windows, Mac OS и Linux, ниже приведены три скриншота с одними и теми же кнопками, расположенными на каждой из трёх операционных систем.
Windows:
Mac OS:
Linux:Примеры кода
Инициализация и использование ButtonBar просты, просто выполните следующее:
// Create the ButtonBar instance ButtonBar buttonBar = new ButtonBar(); // Create the buttons to go into the ButtonBar Button yesButton = new Button("Yes"); ButtonBar.setButtonData(yesButton, ButtonData.YES); Button noButton = new Button("No"); ButtonBar.setButtonData(noButton, ButtonData.NO); // Add buttons to the ButtonBar buttonBar.getButtons().addAll(yesButton, noButton);Приведенный выше пример кода расположит кнопки «Да» и «Нет» относительно операционной системы пользователя. Это означает, что в Windows и Linux кнопка «Да» будет перед кнопкой «Нет», а в Mac OS — «Нет», а затем «Да».
В большинстве случаев макет, специфичный для ОС, является лучшим выбором, но в случаях, когда вам нужен пользовательский макет, это достигается изменением свойства
button order property. Это похожие на шифр строки, являющиеся краткими представлениями порядка кнопок. Встроенные порядки для Windows, Mac OS и Linux:Таблица макета ButtonBar Операционная система Порядок кнопок Windows L_E+U+FBXI_YNOCAH_R Mac OS L_HE+U+FBIX_NCYOA_R Linux L_HE+UNYACBXIO_R Вы должны обратиться к перечислению
ButtonBar.ButtonDataдля описания значения каждого из этих символов. Однако, если ваш ButtonBar состоял только из кнопокButtonBar.ButtonData.YESиButtonBar.ButtonData.NO, вы всегда хотели, чтобы кнопки «Да» были перед кнопками «Нет», и вы хотели, чтобы кнопки былиright-aligned, вы могли бы сделать следующее:// Create the ButtonBar instance ButtonBar buttonBar = new ButtonBar(); // Set the custom button order buttonBar.setButtonOrder("+YN");- С тех пор:
- JavaFX 8u40
- См. также:
ButtonBar.ButtonData
-
Краткое описание свойств
Свойства Тип Свойство Описание DoublePropertybuttonMinWidthУстанавливает минимальную ширину всех кнопок, размещённых в этой панели кнопок.StringPropertybuttonOrderПорядок расположения стандартных кнопок на панели кнопок.-
Наследуемые свойства от класса javafx.scene.control.Control
contextMenu, skin, tooltip
-
Наследуемые свойства от класса javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
-
Наследуемые свойства от класса javafx.scene.Parent
needsLayout
-
Наследуемые свойства от класса 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
-
-
Краткое описание вложенных классов
Вложенные классы Модификатор и тип Класс Описание static classButtonBar.ButtonDataПеречисление всех доступных аннотаций данных кнопки.
-
Краткое описание полей
Поля Модификатор и тип Поле Описание static StringBUTTON_ORDER_LINUXСтандартный порядок кнопок в Linux (в частности, GNOME).static StringBUTTON_ORDER_MAC_OSСтандартный порядок кнопок в Mac OS.static StringBUTTON_ORDER_NONEСтрока порядка кнопок, указывающая, что порядок кнопок отсутствует.static StringBUTTON_ORDER_WINDOWSСтандартный порядок кнопок в Windows.-
Наследуемые поля от класса javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
-
Наследуемые поля от класса javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
-
Краткое описание конструкторов
Конструкторы Конструктор Описание ButtonBar()Создаёт экземпляр ButtonBar по умолчанию, используя стандартные свойства для операционной системы пользователя.ButtonBar(String buttonOrder)Создаёт ButtonBar с заданным порядком кнопок (см.buttonOrderProperty()для получения более подробной информации).
-
Краткое описание методов
Все методыСтатические методыМетоды экземпляраКонкретные методы Модификатор и тип Метод Описание DoublePropertybuttonMinWidthProperty()Устанавливает минимальную ширину всех кнопок, размещённых в этой панели кнопок.StringPropertybuttonOrderProperty()Порядок расположения стандартных кнопок на панели кнопок.protected Skin<?>createDefaultSkin()Создаёт новый экземпляр стандартной темы для этого элемента управления.static ButtonBar.ButtonDatagetButtonData(Node button)Возвращает ранее заданное свойство ButtonData для данной кнопки.doublegetButtonMinWidth()Возвращает минимальную ширину всех кнопок, размещённых в этой панели кнопок.StringgetButtonOrder()Возвращает текущийbutton order.ObservableList<Node>getButtons()Размещение кнопок в этом списке ObservableList укажет ButtonBar на расположение кнопок относительно друг друга на основе их заданныхButtonBar.ButtonData.protected BooleangetInitialFocusTraversable()Возвращает начальное состояние фокусируемого объекта этого элемента управления, используемое движком JavaFX CSS для правильной установки его начального значения.static booleanisButtonUniformSize(Node button)Возвращает, является ли данный узел частью расчётов равномерного размера или нет.static voidsetButtonData(Node button, ButtonBar.ButtonData buttonData)Устанавливает заданное ButtonData для данной кнопки.voidsetButtonMinWidth(double value)Устанавливает минимальную ширину всех кнопок, размещённых в этой панели кнопок.voidsetButtonOrder(String buttonOrder)Устанавливаетbutton orderstatic voidsetButtonUniformSize(Node button, boolean uniformSize)По умолчанию все кнопки в ButtonBar равномерно масштабируются, что означает, что все кнопки занимают ширину самой широкой кнопки.-
Наследуемые методы от класса javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
-
Наследуемые методы от класса javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
-
Наследуемые методы от класса javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
-
Наследуемые методы от класса 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, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, 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, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, 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, 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, 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
-
Наследуемые методы от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Наследуемые методы от интерфейса javafx.css.Styleable
getStyleableNode
-
-
Подробности свойств
-
buttonOrder
public final StringProperty buttonOrderProperty
Порядок расположения типичных кнопок в стандартной панели кнопок. Одна буква на значение перечисленияButtonBar.ButtonData. Также доступны стандартные порядки кнопок для операционных систем:BUTTON_ORDER_WINDOWS,BUTTON_ORDER_MAC_OSиBUTTON_ORDER_LINUX.- См. также:
-
getButtonOrder(),setButtonOrder(String)
-
buttonMinWidth
public final DoubleProperty buttonMinWidthProperty
Устанавливает минимальную ширину всех кнопок, размещенных в этой панели кнопок.- См. также:
-
getButtonMinWidth(),setButtonMinWidth(double)
-
-
Подробности полей
-
BUTTON_ORDER_WINDOWS
public static final String BUTTON_ORDER_WINDOWS
Стандартный порядок расположения кнопок в Windows.- См. также:
- Значения константных полей
-
BUTTON_ORDER_MAC_OS
public static final String BUTTON_ORDER_MAC_OS
Стандартный порядок расположения кнопок в Mac OS.- См. также:
- Значения константных полей
-
BUTTON_ORDER_LINUX
public static final String BUTTON_ORDER_LINUX
Стандартный порядок расположения кнопок в Linux (конкретно, GNOME).- См. также:
- Значения константных полей
-
BUTTON_ORDER_NONE
public static final String BUTTON_ORDER_NONE
Строка порядка кнопок, указывающая, что порядок расположения кнопок отсутствует. Другими словами, кнопки будут размещены в порядке их существования в спискеgetButtons(). Единственное отличие в компоновке от использования HBox заключается в том, что кнопки выравниваются по правому краю.- См. также:
- Значения константных полей
-
-
Подробности конструкторов
-
ButtonBar
public ButtonBar()
Создаёт экземпляр ButtonBar по умолчанию, используя свойства по умолчанию для операционной системы пользователя.
-
ButtonBar
public ButtonBar(String buttonOrder)
Создаёт ButtonBar с заданным порядком кнопок (см.buttonOrderProperty()для получения дополнительной информации).- Параметры:
-
buttonOrder- Порядок кнопок, который следует использовать в этом экземпляре панели кнопок.
-
-
Подробности методов
-
setButtonData
public static void setButtonData(Node button, ButtonBar.ButtonData buttonData)
Устанавливает заданное значение ButtonData для заданной кнопки. Если эта кнопка впоследствии будет размещена вButtonBar, она будет размещена в правильном положении относительно всех других кнопок в панели.- Параметры:
-
button- Кнопка, которую необходимо пометить заданным значениемButtonBar.ButtonData. -
buttonData- Значение ButtonData, которым следует обозначить кнопку.
-
getButtonData
public static ButtonBar.ButtonData getButtonData(Node button)
Возвращает ранее установленное свойство ButtonData для данной кнопки. Если оно никогда не устанавливалось, метод вернёт null.- Параметры:
-
button- Кнопка, для которой необходимо вернуть ранее установленное значение ButtonData. - Возвращает:
- ранее установленное свойство ButtonData для данной кнопки
-
setButtonUniformSize
public static void setButtonUniformSize(Node button, boolean uniformSize)
По умолчанию все кнопки в ButtonBar имеют одинаковый размер, то есть все кнопки занимают ширину самой широкой кнопки. Можно отказаться от этого на основе каждой кнопки, вызвав метод setButtonUniformSize со значением boolean false.Если кнопка исключена из вычисления равных размеров, она исключена как из изменения размера относительно предпочтительного размера, так и из процесса измерения, поэтому её размер не повлияет на максимальный размер, рассчитанный для всех кнопок в ButtonBar.
- Параметры:
-
button- Кнопка, включаемая/исключаемая из вычисления равных размеров. -
uniformSize- Boolean true, чтобы принудительно установить одинаковый размер для кнопки; false, чтобы исключить кнопку из вычисления одинакового размера.
-
isButtonUniformSize
public static boolean isButtonUniformSize(Node button)
Возвращает, является ли данный узел частью вычислений одинакового размера или нет. По умолчанию все узлы, которые не отказались (черезsetButtonUniformSize(Node, boolean)), вернут здесь true.- Параметры:
-
button- кнопка - Возвращает:
- true, если кнопка участвует в расчётах равных размеров
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
Создаёт новый экземпляр стандартной темы для данного элемента управления. Вызывается для создания темы для элемента управления, если тема не предоставлена через CSS-fx-skinили явно задана в подклассе с помощьюsetSkin(...).- Переопределяет:
-
createDefaultSkinв классеControl - Возвращает:
- новый экземпляр стандартной темы для этого элемента управления. Если null, то у элемента управления не будет темы, если её не предоставляет CSS.
-
getButtons
public final ObservableList<Node> getButtons()
Размещение кнопок в этом ObservableList укажет ButtonBar на позиционирование кнопок относительно друг друга на основе их заданногоButtonBar.ButtonData. Чтобы установить ButtonData для кнопки, просто вызовитеsetButtonData(Node, ButtonData), передав соответствующее значение ButtonData.- Возвращает:
- Список, содержащий все кнопки, в данный момент находящиеся в панели кнопок, и позволяющий добавлять или удалять другие кнопки.
-
buttonOrderProperty
public final StringProperty buttonOrderProperty()
Порядок расположения типичных кнопок в стандартной панели кнопок. Одна буква на значение перечисленияButtonBar.ButtonData. Также доступны стандартные порядки кнопок для операционных систем:BUTTON_ORDER_WINDOWS,BUTTON_ORDER_MAC_OSиBUTTON_ORDER_LINUX.- См. также:
-
getButtonOrder(),setButtonOrder(String)
-
setButtonOrder
public final void setButtonOrder(String buttonOrder)
Устанавливаетbutton order- Параметры:
-
buttonOrder- Текущий порядок кнопок, который по умолчанию будет соответствовать порядку кнопок для ОС.
-
getButtonOrder
public final String getButtonOrder()
Возвращает текущееbutton order.- Возвращает:
- Текущее
button order.
-
buttonMinWidthProperty
public final DoubleProperty buttonMinWidthProperty()
Устанавливает минимальную ширину всех кнопок, размещенных в этой панели кнопок.- См. также:
-
getButtonMinWidth(),setButtonMinWidth(double)
-
setButtonMinWidth
public final void setButtonMinWidth(double value)
Устанавливает минимальную ширину всех кнопок, размещенных в этой панели кнопок.- Параметры:
-
value- значение минимальной ширины
-
getButtonMinWidth
public final double getButtonMinWidth()
Возвращает минимальную ширину всех кнопок, размещенных в этой панели кнопок.- Возвращает:
- значение минимальной ширины
-
getInitialFocusTraversable
protected Boolean getInitialFocusTraversable()
Возвращает начальное состояние фокусировки для этого элемента управления, используемое движком JavaFX CSS для корректной установки начального значения. Этот метод переопределяется, так как по умолчанию элементы управления интерфейса имеют фокус, установленный в значение true, но это неприменимо к этому элементу управления.- Переопределяет:
-
getInitialFocusTraversableв классеControl - Возвращает:
- начальное состояние фокусировки для этого элемента управления
- С тех пор как:
- 9
-
© 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.