3

私の OS X 10.8 のインストールには、 Helvetica Neueファミリの 11 のフォントがプリインストールされています。mediumcondensedなどのスタイルのフォントにアクセスする方法を見つけようとしてFont.BOLDいますFont.ITALIC

GraphicsEnvironment.getAllFonts()Fontこれらすべてのフォントのオブジェクトを返しますが、使用してそれらを適用するJLabel.setFont()と、前述のビットマスクで表現可能なスタイルのみが使用されるようです。これは、下のスクリーンショットの左側に示されています。これは、TextEditで使用されているすべてのフォントのサンプルと比較しています。

Fontオブジェクトがフォントの完全な名前またはその PostScript 名を使用して構築されている場合も、同じことが起こります。

SwingGraphics2Dコンポーネントに適用するか、 (またはGraphics) インスタンスにペイントするときに、これらすべてのフォントを使用する方法はありますか?

左側が Swing アプリケーションからの出力、右側がすべてのフォントのサンプルです。

以下は、上のスクリーンショットのダイアログを生成するために使用したコードです。

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

1 に答える 1

0

私はこのようにします。

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

これが役立つことを願っています。

于 2013-03-22T15:04:16.147 に答える