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

如何调整Java Swing GUI适配不同分辨率与高DPI屏幕?

这个问题是高DPI屏幕下Java Swing默认未适配系统缩放导致的,可根据你使用的Java版本选择对应解决方案:

解决方案

方案1:Java 9及以上版本适配

Java 9及更高版本已经内置Windows高DPI缩放支持,两种配置方式可选:

  • 运行JAR时添加启动参数:
java -Dsun.java2d.uiScale=2 -jar 你的jar包名称.jar

2对应Surface Pro常用的200%系统缩放比例,你也可以根据实际显示效果调整为1.5、2.5等数值。

  • 直接在代码中添加配置,放在main方法最开头执行即可:
public static void main(String[] args) {
    // 高DPI缩放配置,必须放在所有Swing初始化代码之前
    System.setProperty("sun.java2d.uiScale", "2");
    FoxAid foxAid = new FoxAid("Fox Aid");
    foxAid.setVisible(true);
}

方案2:Java 8版本适配

Java 8没有内置高DPI支持,可手动全局修改组件默认字体和窗口尺寸:

public static void main(String[] args) {
    try {
        // 统一放大所有组件字体到2倍大小
        Font customFont = new Font("微软雅黑", Font.PLAIN, 28);
        UIManager.put("Button.font", customFont);
        UIManager.put("ToolBar.font", customFont);
        UIManager.put("TextArea.font", customFont);
        UIManager.put("Panel.font", customFont);
        // 项目后续新增的组件类型都可在这里补充对应配置
    } catch (Exception e) {
        e.printStackTrace();
    }
    FoxAid foxAid = new FoxAid("Fox Aid");
    // 手动指定窗口初始大小,替换原来的pack()自动适配
    foxAid.setSize(1200, 800);
    // 窗口居中显示
    foxAid.setLocationRelativeTo(null);
    foxAid.setVisible(true);
}

打包优化建议

如果你后续要把JAR打包为EXE文件分发,可直接在exe4j、Launch4j等打包工具的配置项中添加JVM启动参数-Dsun.java2d.uiScale=2,用户双击运行即可自动适配高DPI屏幕,无需额外操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:42:01