The following code creates a simple user interface containing a single Button
that prints a String
to the console on click.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// create a button with specified text
Button button = new Button("Say 'Hello World'");
// set a handler that is executed when the user activates the button
// e.g. by clicking it or pressing enter while it's focused
button.setOnAction(e -> {
//Open information dialog that says hello
Alert alert = new Alert(AlertType.INFORMATION, "Hello World!?");
alert.showAndWait();
});
// the root of the scene shown in the main window
StackPane root = new StackPane();
// add button as child of the root
root.getChildren().add(button);
// create a scene specifying the root and the size
Scene scene = new Scene(root, 500, 300);
// add scene to the stage
primaryStage.setScene(scene);
// make the stage visible
primaryStage.show();
}
public static void main(String[] args) {
// launch the HelloWorld application.
// Since this method is a member of the HelloWorld class the first
// parameter is not required
Application.launch(HelloWorld.class, args);
}
}
The Application
class is the entry point of every JavaFX application. Only one Application
can be launched and this is done using
Application.launch(HelloWorld.class, args);
This creates a instance of the Application
class passed as parameter and starts up the JavaFX platform.
The following is important for the programmer here:
launch
creates a new instance of the Application
class (HelloWorld
in this case). The Application
class therefore needs a no-arg constructor.init()
is called on the Application
instance created. In this case the default implementation from Application
does nothing.start
is called for the Appication
instance and the primary Stage
(= window) is passed to the method. This method is automatically called on the JavaFX Application thread (Platform thread).stop
method is invoked on the Application
instance. In this case the implementation from Application
does nothing. This method is automatically called on the JavaFX Application thread (Platform thread).In the start
method the scene graph is constructed. In this case it contains 2 Node
s: A Button
and a StackPane
.
The Button
represents a button in the UI and the StackPane
is a container for the Button
that determines it's placement.
A Scene
is created to display these Node
s. Finally the Scene
is added to the Stage
which is the window that shows the whole UI.