我的OS X 10.8安装程序预先安装了11个字体,系列号为Helvetica Neue。我试图找到一种方法来访问字体样式介质或浓缩,这不能由位掩码值Font.BOLD
和Font.ITALIC
表示。如何使用Swing访问字体系列的所有字体
GraphicsEnvironment.getAllFonts()
返回Font
所有这些字体的对象,但应用它们使用JLabel.setFont()
似乎只使用可用所提到的位掩码表示的样式。这在下面的屏幕截图的左侧显示,它将其与TextEdit中使用的所有字体样本进行比较。
如果使用字体的全名或PostScript名称构造Font
对象,则会发生同样的情况。
是否有使用所有这些字体,或者通过将它应用于摇摆组件或画到Graphics2D
(或Graphics
)实例时的方法吗?
下面是我用于生产在上面的截图的对话框的代码。
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);
}
}
[你可以测试](http://stackoverflow.com/a/9022901/714968) – mKorbel 2013-03-15 17:22:55