私の OS X 10.8 のインストールには、 Helvetica Neueファミリの 11 のフォントがプリインストールされています。mediumやcondensedなどのスタイルのフォントにアクセスする方法を見つけようとしてFont.BOLD
いますFont.ITALIC
。
GraphicsEnvironment.getAllFonts()
Font
これらすべてのフォントのオブジェクトを返しますが、使用してそれらを適用するJLabel.setFont()
と、前述のビットマスクで表現可能なスタイルのみが使用されるようです。これは、下のスクリーンショットの左側に示されています。これは、TextEditで使用されているすべてのフォントのサンプルと比較しています。
Font
オブジェクトがフォントの完全な名前またはその PostScript 名を使用して構築されている場合も、同じことが起こります。
SwingGraphics2D
コンポーネントに適用するか、 (または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);
}
}