JavaFX is a software platform for creating and delivering desktop applications, as well as rich Internet applications (RIAs) that can run across a wide variety of devices. JavaFX is intended to replace Swing as the standard GUI library for Java SE, but both will be included for the foreseeable future. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS. JavaFX is no longer bundled with the latest Java, nor will be supported by Oracle, while it still is supported for the current long-term version Java SE 8 through March 2022.
WebView, the embedded browser component supports the following HTML5 features:
- Media playback
- Form controls (except for <input type=”color”> )
- Editable content
- History maintenance
- Support for the <meter> and <progress> tags
- Support for the <details> and <summary> tags
Before version 2.0 of JavaFX, developers used a statically typed, declarative language called JavaFX Script to build JavaFX applications. Because JavaFX Script was compiled to Java bytecode, programmers could also use Java code instead. JavaFX applications could run on any desktop that could run Java SE or on any mobile phone that could run Java ME.
JavaFX 2.0 and later is implemented as a “native” Java library, and applications using JavaFX are written in “native” Java code. JavaFX Script has been scrapped by Oracle, but development is being continued in the Visage project. JavaFX 2.x does not support the Solaris operating system or mobile phones; however, Oracle plans to integrate JavaFX to Java SE Embedded 8, and Java FX for ARM processors is in developer preview phase.
On desktops, JavaFX supports Windows Vista, Windows 7, Windows 8, Windows 10, macOS and Linux operating systems, Beginning with JavaFX 1.2, Oracle has released beta versions for OpenSolaris. On mobile, JavaFX Mobile 1.x is capable of running on multiple mobile operating systems, including Symbian OS, Windows Mobile, and proprietary real-time operating systems.
Open-source JavaFXPorts works for iOS (iPhone and iPad) and Android and embedded (Raspberry Pi); and the related commercial software created under the name “Gluon” supports the same mobile platforms with additional features plus desktop. This allows a single source code base to create applications for the desktop, iOS, and Android devices.
If you wish to build up your JavaFX knowledge first, check out our JavaFX Tutorial for Beginners.
JavaFX Tutorials – Getting Started
Simple examples based on JavaFX
- JavaFX Effects Example
This is a JavaFX Effects Example. An effect is a filter that accepts one or more graphical inputs, applies an algorithm on the inputs, and produces an output.
- JavaFX Layout Example
This is a JavaFX Layout example. JavaFX contains several layout-related classes, which are the topic of discussion in this example.
- JavaFX 2D Shape Example
This is a JavaFX 2D Shape Example. Any shape that can be drawn in a two-dimensional plane is called a 2D shape. JavaFX offers variety nodes to draw different types of shapes.
- JavaFX Complex Shape Example
This is a JavaFX Complex Shape Example. You can draw complex shapes using the Path class. An instance of the Path class defines the path (outline) of a shape.
- JavaFX Animation Example
This is a JavaFX Animation Example. In real world, animation implies some kind of motion, which is generated by displaying images in quick succession.
- JavaFX Transition Example
This is a JavaFX Transition Example. JavaFX contains a number of transitions that let you animate nodes using predefined properties.
- JavaFX Charts Example
This is a JavaFX Charts Example. A chart is a graphical representation of data. Charts provide an easier way to analyze large volume of data visually.
- JavaFX Transformation Example
This is a JavaFX Transformation Example. A transformation is a mapping of points in a coordinate space to themselves preserving distances and directions between them. Several types of transformations can be applied to points in a coordinate space.
- JavaFX HTML Editor Example
This is a JavaFX HTMLEditor Example. The HTMLEditor control provides a rich text editing capability to JavaFX application. It uses HTML as its data model. That is, the formatted text in HTMLEditor is stored in HTML format.
- The JavaFX Print API
This is a JavaFX Print Example. JavaFX added support for printing nodes through the Print API in the javafx.print package.
- JavaFX Concurrency Example
This is a JavaFX Concurrency Example. Java GUI applications are inherently multithreaded. Multiple threads perform different tasks to keep the UI in sync with the user actions.
- The JavaFX Concurrent Framework
This is an article about the JavaFX Concurrent Framework API. Java 5 added a comprehensive concurrency framework to the Java programming language through the libraries in the java.util.concurrent package.
- JavaFX Drag and Drop Example
This is a JavaFX Drag and Drop Example. A drag-and-drop gesture is a specific type of a press-drag-release gesture.
- The JavaFX Media API
This is an article about the JavaFX Media API. JavaFX supports playing audio and video through the JavaFX Media API. HTTP live streaming of static media files and live feeds are also supported.
- JavaFX Color Example
This is a JavaFX Color Example. In JavaFX, you can specify color for text and background color for regions. You can specify a color as a uniform color, an image pattern, or a color gradient.
JavaFX Tutorials – Functions
Basic functionalities based on JavaFX
- JavaFX Event Example
This is a JavaFX Event Example. In general, the term event is used to describe an occurrence of interest. In a GUI application, an event is an occurrence of a user interaction with the application.
- JavaFX Applications with e(fx)clipse
This is an example how to use the e(fx)clipse IDE for creating JavaFX Projects and Applications. The e(fx)clipse standard library provides some useful extensions for writing JavaFX code.
- JavaFX CSS Tutorial
This is a JavaFX CSS tutorial. In this article we will discuss how you can define the style for a Node. You will also learn, how you can add and use StyleSheets (CSS) in JavaFX.
- JavaFX FXGraph Example
This is a JavaFX FXGraph Example. FXGraph is a simple DSL for the definition of a JavaFX 2.x object graph. Instead of generating Java source or byte code, it generates FXML, a special XML format supported by the JavaFX 2.x library.
- JavaFX 3D Shapes Example
This is a JavaFX 3D Shape example. Any shape, drawn in a three-dimensional space, having three dimensions (length, width, and depth) is known as a 3D shape.
- JavaFX Animation Example
This article has examples showing Transition and the Timeline class usage. The Transition example demonstrates the usage of FillTransition, PathTransition and ParallelTransition (this uses FadeTransition and RotateTransition).
- JavaFX FileChooser Example
This article shows examples of JavaFX file choosers. The FileChooser class is defined in the javafx.stage package.
- JavaFX Borderpane Example
This is a JavaFX BorderPane Example. A BorderPane divides its layout area into five regions: top, right, bottom, left, and center.
- JavaFX FXML Tutorial
In this tutorial we will discuss how to use FXML for creating the GUI of an application. The first three chapters are also part of the article JavaFX FXML Controller Example.
- JavaFX FXML Controller Example
This is a JavaFX FXML Controller Example. FXML is an XML-based language designed to build the user interface for JavaFX applications.
- JavaFX TreeView Example
This is a JavaFX TreeView example. A TreeView is a control that displays hierarchical data in a tree-like structure. Each item in a TreeView is an instance of the TreeItem class.
- JavaFX TreeTableView Example
This is a JavaFX TreeTableView Example. The TreeTableView control combines the features of the TableView and TreeView controls. It displays a TreeView inside a TableView.
- JavaFX WebView Example
This is a JavaFX WebView Example. JavaFX provides a web component that can be used as an embedded web browser in a JavaFX application. It is based on WebKit, which is an open source web browser engine.
- JavaFX ListView Example
This is a ListView Example. ListView is used to allow a user to select one item or multiple items from a list of items. Each item in a ListView is represented by an instance of the ListCell class, which can be customized.
- JavaFX TableView Example
This is a JavaFX TableView example. This example displays a table view of books with book title and author information.
- JavaFX Text Example
This is a JavaFX Text Example. We will discuss, how to create and manipulate a Text Node. A text node is an instance of the Text class that is used to render text.
- JavaFX Combobox Example
This is a JavaFX Combobox example. ComboBox is used to let a user select an item from a list of items. It is highly customizable. If you want to create a custom control that will allow users to select an item from a pop-up list, you need to inherit your control from the ComboBoxBase class.
- JavaFX Datepicker Example
This is a JavaFX DatePicker Example. A DatePicker is a combo-box style control. The user can enter a date as text or select a date from a calendar. The calendar is displayed as a pop-up for the control.
- JavaFX List Example
This is an example list application built using JavaFX. The app is a list of todo items. This app has functions to add, update and delete items in the list.
- Expression Based PathTransitions in JavaFX
PathTransitions use Shape objects to describe the path they need to animate along. JavaFX provides various types of Shapes.
- Building Rich Clients with JacpFX and JavaFX2
Creating fast and scaling desktop clients is always a challenge, particularly when dealing with a large amount of data and long running tasks.
JavaFX Tutorials – Scene Class
Simple examples based on JavaFX scene class
- JavaFX Scene Example
This is an example of JavaFX Scene class. The Scene class is the base container for all content in a scene graph. This class is defined in the javafx.scene package.
- JavaFX Scene Example 2
This is a JavaFX Scene example. A Scene represents the visual contents of a Stage. The Scene class in the javafx.scene package represents a scene in a JavaFX program.
- JavaFX Scene Builder Tutorial
This is an article about the JavaFX Scene Builder. You will get a short introduction about the installation and usage of the software. The article contains also a short introduction to FXML.
- JavaFX Graph Example
This is a JavaFX Scene Graph Example. A scene represents the visual contents of a stage. The Scene class in the javafx.scene package represents a Scene in a JavaFX program.
- JavaFX Image Example
This is a JavaFX Image example. JavaFX provides the Image API that lets you load and display images, and read/write raw image pixels. All classes are in the javafx.scene.image package.
- JavaFX Canvas Example
This is a JavaFX Canvas Example. Through the javafx.scene.canvas package, JavaFX provides the Canvas API that offers a drawing surface to draw shapes, images, and text using drawing commands.
- JavaFX Dialog Example
This article shows examples of JavaFX 8 dialogs. The Dialog class is defined in the javafx.scene.control package. The Dialog is the base class and it has three specialized subclasses: Alert, ChoiceDialog and TextInputDialog.
- JavaFX Input Event Example
This is a JavaFX Input Event example. An input event indicates a user input, for example, clicking the mouse, pressing a key, touching a touch screen, and so forth. JavaFX supports many types of input events.
- JavaFX Stage Example
This is a JavaFX Stage Example. A Stage in JavaFX is a top-level container that hosts a Scene, which consists of visual elements. The Stage class in the javafx.stage package represents a stage in a JavaFX application.