如何在JavaFX中获取显示器刷新率 附AWT/Swing参考实现
JavaFX 原生获取显示器刷新率的实现方案
JavaFX 存在原生的对应接口,无需依赖AWT/Swing的API即可实现刷新率获取,调用逻辑和AWT的链式调用逻辑高度一致,仅需使用JavaFX自带的javafx.stage.Screen类即可完成。
具体操作步骤
- 步骤1:导入核心依赖类
javafx.stage.Screen,若使用JDK11+模块化JavaFX,还需在module-info.java中添加requires javafx.graphics;声明 - 步骤2:获取目标屏幕的实例
- 要获取主显示器实例,直接调用静态方法
Screen.getPrimary() - 多显示器场景下,可调用
Screen.getScreens()获取ObservableList<Screen>集合,遍历得到所有外接屏幕的实例
- 要获取主显示器实例,直接调用静态方法
- 步骤3:调用屏幕实例的
getRefreshRate()方法,直接返回对应屏幕的刷新率,返回值为double类型,单位为赫兹(Hz)
调用示例
最简链式调用
直接一行代码即可获取主显示器刷新率,和AWT调用逻辑完全对应:double primaryRefreshRate = Screen.getPrimary().getRefreshRate();
完整代码示例
import javafx.stage.Screen; import java.util.List; public class ScreenRefreshRateDemo { public static void main(String[] args) { // 获取主显示器刷新率 double mainRate = Screen.getPrimary().getRefreshRate(); System.out.println("主显示器刷新率:" + mainRate + "Hz"); // 遍历输出所有显示器的刷新率 List<Screen> allScreens = Screen.getScreens(); for (int i = 0; i < allScreens.size(); i++) { double rate = allScreens.get(i).getRefreshRate(); System.out.printf("屏幕%d刷新率:%.1fHz%n", i+1, rate); } } }
补充说明
该接口返回的是操作系统上报的当前屏幕实际生效刷新率,支持高刷屏幕、可变刷新率(VRR/FreeSync/G-Sync)屏幕的实时数值获取,和AWT接口返回的数值一致,纯JavaFX开发场景下无需引入AWT依赖,兼容性更好。
内容的提问来源于stack exchange,提问作者StartsMercury
相关产品推荐
相关产品推荐

