【问题标题】:How to force fonts to be same size in px for different resolutions如何针对不同的分辨率强制字体大小相同(以 px 为单位)
【发布时间】:2015-02-10 07:15:02
【问题描述】:

我正在开发一个 Java Swing 应用程序,该应用程序需要在比其开发目标小得多的屏幕上运行。

不幸的是,布局严重失真,主要是因为字体显示相对较大。

大部分字体大小是使用 JLabels 和 JButtons 中嵌入的 html 设置的。

如何在不同分辨率下强制 Swing 中的字体大小以像素为单位?

【问题讨论】:

  • 试试这个 Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();整数宽度 = (int)screenSize.getWidth(); int 高度 = (int)screenSize.getHeight(); jlabel.setFont(new Font(null, Font.BOLD, width/whatever));
  • “大部分字体大小都是在 JLabels 和 JButtons 中使用嵌入的 html 设置的。” 这是应该解决的问题。其他一切都是解决问题的技巧。

标签: java swing fonts font-size


【解决方案1】:

按照 javadocs 以 Toolkit(.getToolKit()).getScreenResolution() 开头:“以每英寸点数返回屏幕分辨率”。接下来,为您的屏幕创建一个FontMetricsObjectFont(有多种方法可以做到这一点)。然后,您可以将 FontMetrics.getHeight() 与屏幕分辨率一起使用来确定它将显示多大。您可以使用Font.deriveFont(float),直到大小与您想要的相同或尽可能相似

【讨论】:

  • 我可以在一个地方执行此操作,还是必须调整所有使用字体的组件?
  • 绝对有可能在一个地方通过GraphicsEnvironment
  • 您的意思是使用 getAllFonts() 并调整所有字体?顺便说一句,对于不同的分辨率,我在 dpi 中得到相同的 ScreenResolution() !所以我不明白这对我有什么帮助。
  • 我假设你只有 1 或 2 个 Fonts 你正在使用;您在项目中使用了多少Fonts?其次,如果您发现 ScreenResolution 始终相同,您应该发现 ScreenSize 也始终相同,这很好,因为这意味着无论您将屏幕设置为何种分辨率,您的 Java 应用程序都会相应地调整大小。这实际上是我一直发现的,但如果这不是你发现的,那么这将严重违反 Toolkit 中的 API 合同
  • 你说得对,我只使用了 1 或 2 种字体。我现在正在尝试 graphicsEnv.registerFont(font.deriveFont(0.5)) 但这不需要。它返回false,大概是因为我不能用这个方法覆盖字体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
相关资源
最近更新 更多