You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:07