Чтобы в полной мере воспользоваться преимуществами JavaFX, полезно понимать, как разработан JavaFX, и иметь хорошее представление о том, какие функции JavaFX содержит. Цель этого текста - дать вам обзор JavaFX. В этом тексте сначала рассматривается общий дизайн JavaFX, а затем рассматриваются различные функции JavaFX.

Если вы знакомы с Flash / Flex, вы увидите, что JavaFX в некоторой степени вдохновлен Flash / Flex. Некоторые из тех же идей можно найти в JavaFX.

Как правило, приложение JavaFX содержит один или несколько этапов, соответствующих окнам. К каждому этапу прикреплена сцена. Каждая сцена может иметь прикрепленный к ней граф объектов элементов управления, макетов и т. Д., Называемый графом сцены. Все эти концепции будут объяснены более подробно позже. Вот иллюстрация общей структуры приложения JavaFX:

JavaFX overview of JavaFX internal application structure.

Stage

Стол - это внешний фрейм для приложения JavaFX. Стол обычно соответствует окну. Раньше, когда JavaFX мог работать в браузере, Стол также мог относиться к области внутри веб-страницы, которую JavaFX мог отрисовать.

После прекращения поддержки плагина Java-браузера JavaFX в основном используется для настольных приложений. Здесь JavaFX заменяет Swing в качестве рекомендуемой среды графического интерфейса для рабочего стола. И я должен сказать, что JavaFX выглядит намного более последовательным и многофункциональным, чем Swing.

При использовании в среде рабочего стола приложение JavaFX может иметь несколько открытых окон. У каждого окна свой Стол.

Каждый этап представлен объектом Stage внутри приложения JavaFX. Приложение JavaFX имеет основной объект Stage, который создается за вас средой выполнения JavaFX. Приложение JavaFX может создавать дополнительные объекты Stage, если ему нужно открыть дополнительные окна. Например, для диалогов, мастеров и т. Д.

Scene

Чтобы отобразить что-либо на сцене в приложении JavaFX, вам нужна сцена. Стол может показывать только одну сцену за раз, но можно поменять сцену во время выполнения. Подобно тому, как подмостки в театре может быть перестроена для отображения нескольких сцен во время спектакля, объект сцены в JavaFX может отображать несколько сцен (по одной за раз) в течение всего времени существования приложения JavaFX.

Вы можете задаться вопросом, почему приложение JavaFX может иметь более одной сцены на этап. Представьте себе компьютерную игру. В игре может быть несколько «экранов» для показа пользователю. Например, начальный экран меню, основной экран игры (на котором ведется игра), экран окончания игры и экран рекордов. Каждый из этих экранов может быть представлен отдельным Столом. Когда игре необходимо переключиться с одного экрана на другой, она просто присоединяет соответствующую сцену к объекту Stage приложения JavaFX.

Сцена представлена ​​объектом Scene внутри приложения JavaFX. Приложение JavaFX должно создавать все необходимые ему объекты Scene.

Scene Graph

Все визуальные компоненты (элементы управления, макеты и т. Д.) Должны быть прикреплены к сцене, которая будет отображаться, и эта сцена должна быть прикреплена к сцене, чтобы вся сцена была видна. Общий граф объектов всех элементов управления, макетов и т.д., прикрепленных к сцене, называется графом сцены.

Nodes

Все компоненты, прикрепленные к графу сцены, называются узлами. Все узлы являются подклассами класса JavaFX, называемого javafx.scene.Node.

Есть два типа узлов: ответвительные узлы и листовые узлы. Узел ветвления - это узел, который может содержать другие узлы (дочерние узлы). Узлы ветвления также называются родительскими узлами, поскольку они могут содержать дочерние узлы. Листовой узел - это узел, который не может содержать другие узлы.

Controls

JavaFX controls are JavaFX components which provide some kind of control functionality inside a JavaFX application. For instance, a button, radio button, table, tree etc.

For a control to be visible it must be attached to the scene graph of some Scene object.

Controls are usually nested inside some JavaFX layout component that manages the layout of controls relative to each other.

JavaFX contains the following controls:

  • Accordion
  • Button
  • CheckBox
  • ChoiceBox
  • ColorPicker
  • ComboBox
  • DatePicker
  • Label
  • ListView
  • Menu
  • MenuBar
  • PasswordField
  • ProgressBar
  • RadioButton
  • Slider
  • Spinner
  • SplitMenuButton
  • SplitPane
  • TableView
  • TabPane
  • TextArea
  • TextField
  • TitledPane
  • ToggleButton
  • ToolBar
  • TreeTableView
  • TreeView

Each of these controls will be explained in separate texts.

Layouts

JavaFX layouts are components which contains other components inside them. The layout component manages the layout of the components nested inside it. JavaFX layout components are also sometimes called parent components because they contain child components, and because layout components are subclasses of the JavaFX class javafx.scene.Parent.

A layout component must be attached to the scene graph of some Scene object to be visible.

JavaFX contains the following layout components:

  • Group
  • Region
  • Pane
  • HBox
  • VBox
  • FlowPane
  • BorderPane
  • BorderPane
  • StackPane
  • TilePane
  • GridPane
  • AnchorPane
  • TextFlow

Each of these layout components will be covered in separate texts.

Nested Layouts

It is possible to nest layout components inside other layout components. This can be useful to achieve a specific layout. For instance, to get horizontal rows of components which are not layed out in a grid, but differently for each row, you can nest multiple HBox layout components inside a VBox component.

Charts

JavaFX comes with a set of built-in ready-to-use chart components, so you don't have to code charts from scratch everytime you need a basic chart. JavaFX contains the following chart components:

  • AreaChart
  • BarChart
  • BubbleChart
  • LineChart
  • PieChart
  • ScatterChart
  • StackedAreaChart
  • StackedBarChart

2D Graphics

JavaFX contains features that makes it easy to draw 2D graphics on the screen.

3D Graphics

JavaFX contains features that makes it easy to draw 3D graphics on the screen.

Audio

JavaFX contains features that makes it easy to play audio in JavaFX applications. This is typically useful in games or educational applications.

Video

JavaFX contains features that makes it easy to play video in JavaFX applications. This is typically useful in streaming applications, games or educational applications.

WebView

JavaFX contains a WebView component which is capable of showing web pages (HTML5, CSS etc.). The JavaFX WebView component is based on WebKit - the web page rendering engine also used in Chrome and Safari.

The WebView component makes it possible to mix a desktop application with a web application. There are times where that is useful. For instance, if you already have a decent web application, but need some features which can only be provided sensibly with a desktop application - like disk access, communication with other network protocols than HTTP (e.g UDP, IAP etc.) .