Swing中的哪个字体在所有操作系统中看起来都一样?

Vig*_*ran 8 java user-interface swing netbeans

我在Windows 7下使用带有JDK6的Netbeans 7.0来设计我的Java应用程序的用户界面.我应用系统外观.但它看起来像我想要的在Windows中,但在MacOS中有所不同,更糟糕的是,它在Linux中的不同窗口管理器(LXDE,GNOME,KDE,XFCE)中看起来不同.

不同的意思是字体外观和大小.在Windows中,如果标签看起来是"v 1.23",则在其他操作系统中看起来像"v ...",因为在该操作系统中字体变大,而JLabel没有足够的位置显示.这种情况发生在几个地方.

我不想增加标签宽度.我希望所有操作系统中给定宽度的标签看起来都一样.默认情况下,Netbeans在我的电脑上使用字体Tahoma 11pt.我认为它并非在所有操作系统中都可用,因此其他操作系统使用不同的字体.

Arial是常见字体吗?

我应该手动将每个元素的字体更改为Arial吗?还是其他任何选择?

tra*_*god 8

而是使用布局管理器逻辑字体系列.这个例子Font下面增加了24点斜体衬线文本到(默认)的中心BorderLayout,以实现在不同平台上一个可喜的结果.

ta.setFont(new Font("Serif", Font.ITALIC, 24));
Run Code Online (Sandbox Code Playgroud)

Mac OS X:

苹果电脑

Windows 7的:

视窗

Ubuntu Linux:

Linux的


Ana*_*rma 5

对于窗口管理器而言,除了字体大小之外还有很多其他内容,例如,在gnome和KDE中,两个控件之间的宽度处理方式不同.当它涉及在所有平台上使用相同的字体大小时你可以使用Sans Serif字体,这在我使用的所有操作系统中都可用.

它也会更好(如果你在运行你的应用程序的操作系统中找不到serif)你可以下载一个字体(从GNU免费字体免费).

在设置字体大小和字体时,为什么不尝试使用主题并在那里设置字体...您可以使用该UIManager.setLookAndFeel()方法更改主题.这是一个关于外观和感觉的链接

  • 衬线不是字体.这是一种字体类别.当你告诉Java使用Serif时,它会在你的计算机上选择一个特定的serif字体.从操作系统到操作系统肯定会有各种各样的. (2认同)