Windows中JTextArea的默认字体非常小

| 我正在使用平台外观,在Linux上,我的JTextArea非常可读 但是在Windows上,它使用\“ Monospaced 9 \”,并且文本很小。 为什么以及解决此问题的最佳方法是什么? 为什么默认的Windows外观在JTextArea中使用如此小的字体?     
已邀请:
        与其创建新字体,不如创建现有字体,这是更好的选择,因为这样您可以保存平台外观设置的字体,并且还可以避免Unicode字符出现问题:
textArea.setFont(textArea.getFont().deriveFont(12f)); // will only change size to 12pt
    
        这是一个解决方案,您可以使用它一次更改所有JTextAreas,而不是每次添加新文本区域时都使用setFont():
UIManager.getDefaults().put(\"TextArea.font\", UIManager.getFont(\"TextField.font\"));
设置外观后,在应用程序启动时调用此函数。 大多数L&F对于JTextArea和JTextField使用相同的字体,奇怪的是Windows没有。     
        如果要保持一致的外观,请使用Nimbus或Metal外观,而不是操作系统默认设置。这也将允许您调整任何设置。另外,我个人认为Nimbus的外观比其他外观要平滑得多。     
        我刚刚在TextArea中使用了TextField字体...
textArea = new JTextArea();
textArea.setFont(UIManager.getFont(\"TextField.font\"));
    
        您可以使用
JTextArea1.setFont(Font(String name, int style, int size))
方法为JTextArea组件指定特定的字体类型。举个例子
jTextArea1.setFont(new Font(\"Arial Black\", Font.BOLD, 8));
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class NewJFrame extends javax.swing.JFrame {

    private JTextArea jTextArea1;
    private JTextArea jTextArea2;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                NewJFrame inst = new NewJFrame();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }

    public NewJFrame() {
        super();
        initGUI();
    }

    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            {
                jTextArea1 = new JTextArea();
                getContentPane().add(jTextArea1, BorderLayout.NORTH);
                jTextArea1.setText(\"This is a fox running slow\");
                jTextArea1.setFont(new Font(\"Arial Black\", Font.BOLD, 8));
                jTextArea1.setPreferredSize(new java.awt.Dimension(164, 114));
            }
            {
                jTextArea2 = new JTextArea();
                getContentPane().add(jTextArea2, BorderLayout.SOUTH);
                jTextArea2.setText(\"This is a fox running slow\");
                jTextArea2.setFont(new Font(\"Book Antiqua\", Font.ITALIC, 12));
                jTextArea2.setPreferredSize(new java.awt.Dimension(384, 129));
            }
            pack();
            setSize(400, 300);
        } catch (Exception e) {
            //add your error handling code here
            e.printStackTrace();
        }
    }

}
    
        做就是了
textArea.setFont(new Font(\"Arial\", Font.PLAIN, 16));
这会将textarea内的所有文本更改为相同大小的字体。     

要回复问题请先登录注册