问题在于Jtextarea使用的默认字体与JTextField不同。在我编写的必须支持多语言的应用程序中,我遇到了同样的问题。
问题的原因是Jtextarea通常用于显示等宽字体,例如Courier New。通常,Java不包含用于显示汉字的等间距图形字体的其他映射。
您所拥有的修复程序有效,因为没有名为“
123”的字体,因此采用了默认设置(对话框)。“对话框”字体在内部映射到平台的font.properties文件中的字体系列。这将与JTextField使用相同的字体。
我有以下修复程序,以确保在所有图形组件中使用相同的字体定义。您还可以找到Jtextarea的特定键并进行更改。这样,您不必担心任何组件的字体,它们将通过对话框初始化。
Object fontDefinition = new UIDefaults.ProxyLazyValue("javax.swing.plaf.FontUIResource", null, new Object[] { "dialog", new Integer(Font.PLAIN), new Integer(12) });java.util.Enumeration keys = UIManager.getDefaults().keys();while (keys.hasMoreElements()) { Object key = keys.nextElement(); Object value = UIManager.get(key); if (value instanceof javax.swing.plaf.FontUIResource) { UIManager.put(key, fontDefinition); }}


