JTextArea 默认字体在 Windows 中非常小

发布于 2024-11-17 10:27:41 字数 169 浏览 4 评论 0原文

我正在使用平台look-and-fell,在 Linux 上我的 JTextArea 非常可读 但在 Windows 上它使用“Monospaced 9”并且文本非常小。

为什么以及解决这个问题的最佳方法是什么?

为什么默认的 Windows 外观在 JTextArea 中使用如此小的字体?

I'm using platform look-and-fell and on Linux my JTextArea is pretty readable
But on Windows it uses "Monospaced 9" and the text is very small.

Why and what is the best way to fix that?

Why default Windows look-and-fell uses such small font in JTextArea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

甜点 2024-11-24 10:27:41

与其创建新字体,不如派生< /a> 现有字体,因为这样您将保存平台外观设置的字体,并且还可以避免 unicode 字符的问题:

textArea.setFont(textArea.getFont().deriveFont(12f)); // will only change size to 12pt

Instead of creating new font, it is better to derive existing font, because this way you'll save the font set by platform look and feel, and it may also avoid problems with unicode characters:

textArea.setFont(textArea.getFont().deriveFont(12f)); // will only change size to 12pt
面如桃花 2024-11-24 10:27:41

这里有一个解决方案,您可以使用它来一次更改所有 JTextArea,而不是每次添加新文本区域时都使用 setFont():

UIManager.getDefaults().put("TextArea.font", UIManager.getFont("TextField.font"));

在设置外观和感觉后,在应用程序启动时调用此方法。

大多数 L&F 对 JTextArea 和 JTextField 使用相同的字体,奇怪的是 Windows 却没有。

Here's a solution that you can use to change all JTextAreas at once instead of using setFont() every time you add new text area:

UIManager.getDefaults().put("TextArea.font", UIManager.getFont("TextField.font"));

Call this on start of your application, after setting the Look and Feel.

Most L&Fs use the same font for JTextArea and JTextField, it's strange that Windows doesn't.

还给你自由 2024-11-24 10:27:41

如果您想要一致的外观,请使用 Nimbus 或 Metal 外观和感觉,而不是操作系统默认值。这也将允许您调整任何设置。另外,我个人认为 Nimbus 的外观和感觉比其他的看起来更平滑。

If you want a consistent look then use the Nimbus or Metal look and feel instead of the OS default. That will also allow you to tweak any settings. Plus I personally I think the Nimbus Look and Feel is much smoother looking than the others.

ら栖息 2024-11-24 10:27:41

我刚刚在 TextArea 中使用了 TextField 字体...

textArea = new JTextArea();
textArea.setFont(UIManager.getFont("TextField.font"));

I've just used TextField font in TextArea...

textArea = new JTextArea();
textArea.setFont(UIManager.getFont("TextField.font"));
羅雙樹 2024-11-24 10:27:41

您可以使用 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();
        }
    }

}

You can use the JTextArea1.setFont(Font(String name, int style, int size)) method to specify the specific type of font for a JTextArea component. As an example

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();
        }
    }

}
香草可樂 2024-11-24 10:27:41

只需执行

textArea.setFont(new Font("Arial", Font.PLAIN, 16));

这会将文本区域内的所有文本更改为相同大小的字体。

Just do

textArea.setFont(new Font("Arial", Font.PLAIN, 16));

That changes all of the text inside of the textarea to the same size font.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文