【问题标题】:Resolution issue with JFrameJFrame 的解析问题
【发布时间】:2016-07-29 19:25:54
【问题描述】:

我的分辨率有问题。我开发了运行良好的 Java Swing 应用程序(桌面应用程序),但是当我开始将该应用程序与不同的笔记本电脑或台式机系统一起使用时,问题就出现了,每个系统都有自己的分辨率,因此 JFrame 上的组件变得越来越小,并且最大的问题是当我开始在 4K 分辨率系统中使用该应用程序时,您看不到任何东西,因为 JFrame 上的所有内容都变得太小,您将无法阅读任何内容。我们对此有任何解决方案吗?

【问题讨论】:

  • 你在使用布局管理器吗?
  • 一些演示问题的代码,minimal reproducible example,将帮助我们了解问题所在。正如你所说,我们不能肯定地说。例如,您可以直接设置大小,而不是让 Swing 自动设置。但是没有代码,就没有办法知道。
  • 所以布局是 GridLayout 正在工作。因此,无论您设置什么分辨率,它都会相应地排列组件,但不会增加/减少字体大小。这就是问题

标签: java


【解决方案1】:

听起来您遇到的问题是 Windows 上的 Java 或 Linux 中的 Swing/AWT 缺乏 HiDPI 支持。这将在 Java 9 中修复,您可能可以使用最新的 alpha 版本之一对其进行测试。

LookAndFeels 目前只是不支持在 HiDPI 环境中自动正常工作所需的缩放。在 Java 9 可用之前,您需要手动调整文本/组件/窗口的大小/缩放,或者切换到 JavaFX。

Here's an example如何手动增加字体大小。

【讨论】:

    【解决方案2】:

    这就是所有应用程序的行为方式。 GUI 元素的大小以像素为单位定义,如果显示器的分辨率变大,它将拥有更多的像素,并且相对的 GUI 元素的大小会减小。这就是为什么 Windows(可能还有其他系统)可以选择设置 dpi 缩放,否则一切看起来都太小了。

    不过有一个有趣的错误 - Swing is by default claiming that it is DPI aware, so windows doesn't scale it. There are ways to change that behaviour though. 如果 Windows 启用了缩放,那么您的应用在高分辨率屏幕上看起来会比其他原生应用更小。这尤其令人难过,因为 swing 实际上不支持 DPI 缩放,唯一的选择是手动更改字体大小How to set the DPI of Java Swing apps on Windows/Linux?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2010-10-10
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多