gpt4 book ai didi

java - Swing 字体看起来比应有的小

转载 作者:行者123 更新时间:2023-11-29 09:52:14 25 4
gpt4 key购买 nike

我正在使用需要显示给定字体大小的文本的 Swing 程序。但我注意到,在 Swing 中,文本看起来比应有的小很多。与例如 Microsoft Word 相比,文本在较小的字体下几乎不可读。

Swing 和 Microsoft Word 都使用 Arial, 8。区别很明显。 enter image description here

对于那些想尝试的人,这里有一个小例子:

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);

JLabel label = new JLabel("This is my test text which should look bigger");
label.setFont(new Font("Arial", Font.PLAIN, 8));

frame.add(label);

frame.setVisible(true);
}

有人知道会发生什么吗?

最佳答案

在 java 文档中,字体的大小应该以 pt 为单位,但它似乎改为使用 px。

因此您的文本不是 8pt(就像在 word 或 libre office 中,...)它的 8 像素高度。您可以将 pt 转换为 px (8pt = ~ 10px)

enter image description here

转换的确切公式并不那么简单,因为它是特定于设备的,但您可以使用(正确的 ppi = 96):

pt = px*0.75
px = pt/0.75

这个公式不准确,但正如您在我的测试图像中所见:10/0.75 = = 7.5pt(10号最接近文字文字)

如果你希望它尽可能准确,你可以为你的设备计算它:pt 定义为 1/72 in(参见 wikipedia)所以公式是:

px = pt / (72 / ppi); //ppi = points per inch

在java中你可以这样做:

public int pointToPixel(float pt){
int ppi = Toolkit.getDefaultToolkit().getScreenResolution();
return (int) Math.round(pt / (72 / ppi));
}

关于java - Swing 字体看起来比应有的小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40822715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com