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

Java 23中Swing的Toolkit.getScreenSize()返回错误分辨率问题咨询

Java 23调用Toolkit.getDefaultToolkit().getScreenSize()返回错误屏幕尺寸的原因
  • 核心原因是Java版本间高DPI屏幕适配逻辑的变更:
    • Java 8及更早版本默认未启用高DPI感知,getScreenSize()直接返回屏幕的物理分辨率(即你提到的1920×1080)。
    • Java 9及后续版本(包括Java 23)默认开启高DPI缩放支持,此时getScreenSize()返回的是逻辑分辨率——也就是系统显示缩放后的分辨率。你的系统显示缩放比例应为125%,计算下来1920÷1.25=1536,1080÷1.25=864,与你遇到的结果完全吻合。
  • 补充:你使用的Zulu FX JDK遵循OpenJDK的高DPI适配规则,因此同样受这一逻辑变更影响。

可选解决方案

  • 若需获取物理分辨率,可替换API为GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode().getSize(),该方法会返回屏幕的物理像素尺寸。
  • 若要强制应用使用物理分辨率(关闭高DPI缩放感知),可在启动时添加JVM参数:-Dsun.java2d.dpiaware=false

内容的提问来源于stack exchange,提问作者Andi Riese

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:52:32