Get the window size in JavaFX tutorial
We all know that programming is difficult, but if we are passionate about it, it may make us happy all day. If you’re new to a programming language like Java, this is a good place to start. As a beginner, we want to explore almost everything and develop an application to master the language while learning it.
Java is a pleasant programming language to learn; click here to learn more. In this article, we will look at how to get the window size in JavaFX. we will need to use various JavaFX APIs. Before getting the window size in JavaFX, we need to learn the following topics first.
- textProperty – is the property of the object to be changed
- bind – binds the property to observable and a method comes from the base property interface; more information here
- format – a method that returns formatted string; more information here for the format()
How to get the window size in JavaFX?
To get the window size in JavaFX is very easy and simple, by the use of the textProperty, bind, and format method we get the window size in just one line of code. So, we need to have a label in our application as an example to display the window size in JavaFx. The lesson here is when we are resizing the window in JavaFX, our label will automatically displays the update of the window size.
The textProperty method will handle everything if there are any changes to the object. So, the bind method will observe if something is happening and then pass it to the format method. The format method returns the window size using the %f format specifier, which is a floating point data type. You could test it on your own program to see how it turns out. Please take a look at the code below.
Example code
import javafx.application.Application; import javafx.beans.binding.Bindings; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; /** * * @author KENSOFT */ public class Window_size extends Application { @Override public void start(Stage primaryStage) { Label lbl_size = new Label(); StackPane root = new StackPane(); root.getChildren().add(lbl_size); Scene scene = new Scene(root, 582, 448); primaryStage.setTitle("Window Size"); primaryStage.setScene(scene); primaryStage.show(); // The line of code below is here is to get the window size lbl_size.textProperty().bind(Bindings.format("Window size: %1$.0fx%2$.0f", primaryStage.widthProperty(), primaryStage.heightProperty())); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }