taylorialcom/ GUI

JavaFX

JavaFX Overview

JavaFX is a collection of packages that can be used to create programs with a graphical user interface.

Application Class

To create a JavaFX application we create a class that extends the Application class. The class contains an abstract method, start(), which must be overridden. The start() method must be passed the primary stage which defines the UI for the application.

The init() and stop() may be overridden to provide initial set-up and tear-down instructions. The implementations in the Application are empty. When an instance of the subclass of Application in instantiated, init() is called first, then start(Stage stage) is called. When the application is finished (either with an explicit call to Platform.exit() (preferred over System.exit()) or when the last window is closed (provided Platform.implicitExit==true)), stop(). is called.

Stage Class

The Stage class is a JavaFX container that describes the UI for the application. The primary Stage object is created by the JVM and passed to the Application.start() method. A minimal JavaFX application is shown below:

public class HelloWorld extends Application {

    @Override
    public void start(Stage stage) {
        Label message = new Label("Hello World!");
        Scene scene = new Scene(message);

        stage.setTitle("Title bar"); 
        stage.setScene(scene); 
        stage.show(); 
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

We need to import the appropriate javafx. statements (be sure to select the javafx packages and not other ones). In the above code, the start() method creates a Label object and adds it to a Scene. The scene of the stage is then set to this newly created scene.

Scene Class

The Scene class is the container for the graphical user interface content. The content is represented as a tree of nodes (called a scene graph) where each node is either a branch or a leaf. When instantiated, the Scene is passed the root node of the tree.

Panes

In the very simple example above we placed a control (message) directly onto the scene. In non-trivial GUI applications we will make use of Panes to organize the layout of our controls in the window. There are a number of types of panes available for us to use, e.g., VBox, HBox, FlowPane, and GridPane.

Controls

The Control class is the base class for all user interface controls. A control is a node in the scene graph which can be manipulated by the user. Since Control is a subclass of Region, they can be styled with CSS (Cascading Style Sheets).

The Label class is a specific type of control. A label is a non-editable text control that can be used to display text.

There are many other types of controls available to use in JavaFX. For example, Button, TextField, ScrollPane, ListView, and many others.