JavaFX窗口居中显示
在JavaFX中,窗口的居中显示是一项常见的需求。本文将介绍如何在JavaFX应用程序中实现窗口的居中显示,并提供代码示例。让我们开始吧!
为什么要居中显示窗口?
在编写GUI应用程序时,窗口的居中显示是一种常见的设计选择。居中显示窗口可以增加用户体验,并使应用程序更加专业和易于使用。无论是启动应用程序时,还是在用户调整窗口大小后,窗口都应该保持在屏幕中央。接下来我们将讨论如何实现这一目标。
居中显示窗口的方法
JavaFX提供了几种方法来居中显示窗口。下面是其中的两种方法:
方法一:使用Screen类
JavaFX的Screen类提供了许多有用的方法来获取屏幕的大小和位置信息。我们可以使用它来计算窗口的居中位置。
import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Screen;
import javafx.stage.Stage;
public class CenteredWindow extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个根布局
StackPane root = new StackPane();
// 创建一个场景
Scene scene = new Scene(root, 400, 300);
// 获取屏幕的可见边界
Rectangle2D screenBounds = Screen.getPrimary().getVisualBounds();
// 设置窗口的位置和大小,使其居中显示
primaryStage.setX((screenBounds.getWidth() - scene.getWidth()) / 2);
primaryStage.setY((screenBounds.getHeight() - scene.getHeight()) / 2);
primaryStage.setWidth(scene.getWidth());
primaryStage.setHeight(scene.getHeight());
// 设置窗口标题
primaryStage.setTitle("居中显示窗口");
// 在根布局中添加一些内容
root.getChildren().add(/* 添加一些节点 */);
// 设置场景并显示窗口
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在上面的代码示例中,我们首先创建一个StackPane作为根布局,并将其添加到场景中。接下来,我们使用Screen类获取屏幕的可见边界,并根据窗口和场景的大小计算窗口的居中位置。最后,我们设置窗口的位置和大小,并显示出来。
方法二:使用Bounds类
另一种居中显示窗口的方法是使用Bounds类。Bounds类表示一个矩形区域,我们可以使用它的属性来计算窗口的居中位置。
import javafx.application.Application;
import javafx.geometry.Bounds;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class CenteredWindow extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个根布局
StackPane root = new StackPane();
// 创建一个场景
Scene scene = new Scene(root, 400, 300);
// 设置窗口的位置和大小,使其居中显示
primaryStage.setOnShown(event -> {
// 获取窗口的边界
Bounds windowBounds = primaryStage.getScene().getWindow().getBounds();
// 获取屏幕的可见边界
double screenWidth = primaryStage.getScene().getWidth();
double screenHeight = primaryStage.getScene().getHeight();
// 计算窗口的居中位置
double windowX = (screenWidth - windowBounds.getWidth()) / 2;
double windowY = (screenHeight - windowBounds.getHeight()) / 2;
// 设置窗口的位置
primaryStage.setX(windowX);
primaryStage.setY(windowY);
});
// 设置窗口标题
primaryStage.setTitle("居中显示窗口");
// 在根布局中添加一些内容
root.getChildren().add(/* 添加一些节点 */);
// 设置场景并显示窗口
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在上面的代码示例中,我们首先创建一个StackPane作为根布局,并将其添加到场景中。然后,我们使用setOnShown方法来监听窗口显示事件,并在该事件发生时计算窗