gpt4 book ai didi

java - 如何使用 Swing 访问字体系列的所有字体

转载 作者:行者123 更新时间:2023-12-03 02:37:56 31 4
gpt4 key购买 nike

我安装的 OS X 10.8 预装了 Helvetica Neue 系列中的 11 种字体。我正在尝试找到一种方法来访问具有 mediumcondensed 等样式的字体,这些样式无法由位掩码值 Font.BOLD< 表示Font.ITALIC

GraphicsEnvironment.getAllFonts() 返回所有这些字体的 Font 对象,但使用 JLabel.setFont() 应用它们似乎只使用可使用上述位掩码表示的样式。这显示在下面的屏幕截图的左侧,它将它与在TextEdit中使用的所有字体的示例进行了比较。

如果使用字体的全名或其 PostScript 名称构造 Font 对象,也会发生同样的情况。

有没有办法使用所有这些字体,无论是将其应用到 Swing 组件,还是绘制到 Graphics2D(或 Graphics) >) 实例?

Output from the Swing application on the left, sample of all fonts on the right.

下面是我用来生成上面屏幕截图中的对话框的代码。

package fahrplan;

import java.awt.*;
import javax.swing.*;

public class FontsMain {
public static void main(String[] a) {
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();

JPanel contentPane = new JPanel();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS));

for (Font i : e.getAllFonts()) {
String name = i.getFontName();

if (name.startsWith("HelveticaNeue")) {
JLabel label = new JLabel(name);

label.setFont(i.deriveFont(18f));

contentPane.add(label);
}
}

JFrame frame = new JFrame("Fonts");
frame.setContentPane(contentPane);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}

最佳答案

我会这样做。

int size=12, style=0;

GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
final Font[] fonts = e.getAllFonts();
for(int i=0; i<fonts.length; i++)
{
JLabel label = new JLabel(Font[i].getName);
label.setFont(new Font(Font[i].getName, size, style));
contentPane.add(label);
}

我希望这会有所帮助。

关于java - 如何使用 Swing 访问字体系列的所有字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438457/

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