Java-Swing应用程序中的丑陋/非抗锯齿字体

我最近切换到Ubuntu并使用webupd8team / java存储库安装了Oracle的Java JDK 8u45(32位)。

除了Java-Swing应用程序具有破坏和丑陋的字体且没有抗锯齿之外,一切似乎都运行良好。 更改字体不起作用。 像Gedit这样的本机应用程序虽然具有相同的字体但不会受到影响(Eclipse也不是非Swing Java应用程序); 它只影响基于Swing的应用程序。

Eclipse似乎工作得很好,但它对我来说是一个严重的问题,因为我是一个Java开发人员,我主要使用Swing作为我的应用程序(没有SWT或任何其他本地替代品)。

截图:(jEdit v5.1)

jEdit的屏幕截图

我正在运行Ubuntu 15.04(这是2015-06-15的最新版本)。 我的Java版本是1.8.0_45,’java -version’给出以下输出:

java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode) 

我已经尝试过类似问题中提供的修复程序(此处和其他stackexchange站点),但它们不起作用。 我还在/ etc / environment中添加了以下行(如下所示: https : //wiki.archlinux.org/index.php/Java_Runtime_Environment_Fonts )但它们没有给我任何明显的结果。

 JAVA_FONTS=/usr/share/fonts/truetype _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' 

我敢肯定必须有一个解决方案。 相同的Java应用程序在Windows-7上正常运行。 我无法将Swing应用程序移植到SWT只是因为这个小问题,我也无法停止开发。 但我无法做任何事情,因为它是操作系统的一个问题。

这个问题早已解决,所以我决定发布解决方案。 请注意,问题仍然存在,但可以通过参数修复。

添加此行:

 _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true' 

/etc/environment修复了这个问题。

此修复程序适用于Ubuntu 16.04和OpenJDK 8u151(未使用Oracle JDK或Java 9进行检查)。

工作范例: 在此处输入图像描述

注意 :某些字体和AA设置使问题复杂化。 在jEdit中,我使用默认的Java字体(所谓的“Dialog”)。 您可以使用不同的字体作为文本区域,但对话框最适合按钮等。我发现的最佳Text-Area AA设置是标准的,但您的里程可能会有所不同。