如何在 Windows/Linux 上设置 Java Swing 应用程序的 DPI?

2024-01-05

如果您的显示器的 DPI 超过 150(例如 Macbook Pro),您也可能会发现问题:Java Swing 应用程序上的字体对于高 DPI 显示器来说太小,而且我根本无法更改字体大小(它直接忽略Windows DPI,只显示最初的 DPI-->96)。我只能改变屏幕分辨率,这绝对会使液晶显示屏上的所有内容变得模糊。

是的,我有一台高 DPI 显示器的笔记本电脑,15.6',分辨率为 1920x1080,一些 Java 桌面应用程序在我的笔记本电脑上看起来很小,例如 Matlab、Burpsuite 等。我在互联网上搜索了很长一段时间,但是仍然找不到解决问题的方法。我知道我可以通过更改 JRE 字体JRE_HOME/lib/font/fontconfig.properties.src,但我找不到任何地方可以设置 Java 桌面字体的默认字体大小或 DPI。

难道问题就没有解决办法了吗?您有高 DPI 显示器吗?您如何使用此类应用程序? Swing会放弃高DPI用户吗?


我目前正在 Windows 上调查此问题。这是我发现的:

大多数 Swing 外观和感觉根本不支持高 DPI,甚至 Nimbus 也不支持,尽管它应该是可扩展的。我发现一些旧的博客文章说 Nimbus 最终可能会提供高 DPI 缩放,但显然这从未发生过。

系统 LAF 是一个例外,但在所有 DPI 设置下,其默认字体比实际系统字体大小小 10% 左右。此外,必须按照此处所述明确选择系统:http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

在 Swing 中也没有可以设置的单一缩放因子。特定的 LAF 必须提供代码来处理缩放。因此,您能做的最好的事情就是选择“系统”并希望它足够好。

然而,JavaFX 在我的系统上正确且自动地扩展至 150%。如果可能的话,我建议您使用 JavaFX 来构建 GUI。

编辑:我制作了几个小测试程序,并对各种 GUI 框架、Swing 主题和 DPI 设置进行了比较屏幕截图。对于阅读此问题的人来说,这可能会提供一些信息:http://kynosarges.org/GuiDpiScaling.html http://kynosarges.org/GuiDpiScaling.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows/Linux 上设置 Java Swing 应用程序的 DPI? 的相关文章

随机推荐

  • Android 如何等待服务实际连接?

    我有一个活动调用 IDownloaderService aidl 中定义的服务 public class Downloader extends Activity IDownloaderService downloader null 在 Do
  • 如何绘制许多不均匀分布的 value_counts

    假设我有以下数据 s2 pd Series 1 2 3 4 5 2 3 333 2 123 434 1 2 3 1 11 11 432 3 2 4 3 3 3 54 34 24 2 223 2535334 3 1 1 0 0 0 0 0 0
  • Ionic PWA 从 config.xml 获取版本号

    我想在 Ionic PWA 中显示 config xml 中的版本号 使用 ionic 本机应用程序版本插件可以轻松完成 ios android 构建 但是 PWA 构建的好方法是什么 npm run build release prod
  • 无法读取实例数据,放弃 python boto 中的错误

    我正在尝试使用 boto 库访问亚马逊 s3 以访问亚马逊 aws publicdatasets 中可用的常见爬网数据 我在 boto 中创建了访问配置文件 Credentials aws access key id my key aws
  • Codeigniter:按日期升序排序

    您好 这是我用于订购和获取数据的模型代码 this gt db gt order by oBy asc query this gt db gt get books 一切工作正常 但是在我的数据库中 我将日期存储为字符串 例如2014 年 1
  • 如何编辑和调试 R 库源

    我在 R 脚本中包含了一个名为 blotter 的库 该库中有一个错误 有没有一种简单的方法可以让我编辑源代码来尝试调试问题 查找trace and browser函数 它们是R中调试的基本工具 假设您要编辑函数的源代码foo 然后说 tr
  • .NET API 更新包括 ID

    我有 Ruby on Rails API 背景 但目前正在开发 NET C WebAPI 我熟悉 C 和 NET Webform 我正在尝试设置一个 PUT 请求来更新数据库中的记录 脚手架方法会覆盖所有字段 而我只想更新通过 PUT 传递
  • 音译/转置 NSString 中的字符

    我想将西里尔字符串音译为最接近的拉丁字符串 例如 gt matreshka gt 伏特加 因此 理想情况下 我希望在 NSString 或其他地方有一些现成的方法 这些方法已经了解有关字母表的所有内容并且可以进行对话 但如果 iOS API
  • 在 x64 Windows 中,有没有办法运行 Runtime.exec() 进程以避免“注册表重定向”

    我们的应用程序在 jvm 32 位中运行 即使在 Windows x64 中也是如此 现在 在某些时候 我需要访问一些注册表值 例如 HKEY LOCAL MACHINE SOFTWARE mycomp 我通过执行来做到这一点 cmd C
  • 如何使用SQL和VBA从Access表中获取多个小计?

    我正在尝试使用 Windows 中的外部 vbs 文件 vbscript 从 Access Table 获取多个小计 mySQL SELECT Data Time Quantity Sum Data Price AS SumOfPrice
  • php shell_exec($cmd) 不在 cronjob 中运行

    很抱歉 我相信 这个问题很糟糕 但是谷歌和这个论坛中的其他文章无法帮助我 我将运行一个 php 脚本 其中包含以下代码 cmd duck u user name p pwd parallel 1 e overwrite y throttle
  • 如何查询数据库字段但忽略 HTML 标记?

    我们有一个包含用于在网站上格式化的 HTML 标记的字段 但我们只需要查询应在屏幕上呈现的文本 而不是 CSS 标签 标签名称 属性名称等内容 有没有办法忽略 SQL 查询或存储过程中的标记 如果有办法做到这一点 我们以后会遇到性能问题吗
  • 如何更改UIWebView中的字符编码?

    问题总结 在 iOS 上浏览非英文网站时 如果没有使用 UIWebView 明确指定正确的字符编码 则页面无法正确显示 详细解释 As the loadRequest UIWebView 中的方法将使用从 Web 服务器发送的字符集标头中指
  • 将查询参数传递给 Flask 装饰器

    我正在为我的 Flask 服务器设置一个令牌身份验证系统 并且我希望能够设置一个装饰器 如下所示 app route my data requires token auth def get my endpoint data Return J
  • jquery滑动侧边栏从左到右

    我正在尝试创建一个滑动侧栏 其效果类似于 www wookmark com http www dynamicdrive com dynamicindex1 slideinmenu htm http www dynamicdrive com
  • 使用 ETW 跟踪 Windows 用户模式进程系统调用

    有些人告诉我 ETW 提供了一种捕获用户模式进程发出的系统调用的机制 我已经列举了可用的提供者 并且只提出了两个可能提供此信息的可能的提供者 第一个是 Microsoft Windows Kernel Audit API Calls 该提供
  • 如何使用 pycharm 调试 docker-compose 内运行的进程

    我正在尝试将本地 Pycharm Django 切换到基于 docker 的开发环境 我在 mac 上运行并使用 Docker Compose 很少的 docker 我的 django 应用程序 一些 db 和 nginx 一切运行良好 代
  • scikit-learn 中 SVC 和 SVM 有什么区别?

    来自文档 http scikit learn org stable modules svm htmlscikit learn 实现了 SVC NuSVC 和 LinearSVC 这些类能够在数据集上执行多类分类 另一方面 我还了解到 sci
  • 是否总是可以使用 HTML5

    我一直注意到您可以使用 HTML5 标签播放音频文件 考虑到您只需要使用 1 个元素来播放视频和音频 这看起来真的很方便 一个例子是这个 JSFiddle http jsfiddle net oacLrnvv
  • 如何在 Windows/Linux 上设置 Java Swing 应用程序的 DPI?

    如果您的显示器的 DPI 超过 150 例如 Macbook Pro 您也可能会发现问题 Java Swing 应用程序上的字体对于高 DPI 显示器来说太小 而且我根本无法更改字体大小 它直接忽略Windows DPI 只显示最初的 DP