利用可能なFont名を入手する


GraphicsEnvironment classを使って、利用可能なFont名が入手可能です。プラットフォームにインストールされているフォント名が入手されます。
下のsampleでは利用可能な論理フォント名と、フォントファミリー名を入手し、JLabelに表示しています。
実行結果は、左の列が論理フォント名で表示、右の列がフォントファミリー名で表示、MS-Windows98で実行したものです。


  
/*
  *  Get  Available fonts   on  local  system.
  *  JDK1.2
*/
import  java.awt.*;
 import  java.awt.event.*;
 import  javax.swing.*;

 class  ExamFontAvailable    {

     public  static  void  main(String  args[])  {
         JTextArea  jta1,  jta2;

         JFrame  jf    =  new  JFrame("Available  Font");
         jf.addWindowListener(new  WindowAdapter() {
             public  void  windowClosing(WindowEvent  we)  {
                  System.exit(0);
             }
         });
         //  get  Fonts Logical  names
         jta1  =  new JTextArea("Fonts Logical names"  +  "\n\n");
         GraphicsEnvironment    ge  =  GraphicsEnvironment.getLocalGraphicsEnvironment();
         Font  fonts[]                =  ge.getAllFonts();
         for (int  idx  =  0;  idx < fonts.length;  idx++ )  {
                jta1.append( fonts[idx].getName()  +  "\n");
         }

         //  get Fonts  Family names
         jta2  =  new JTextArea("Fonts Family names"  + "\n\n");
         jta2.setBackground(Color.lightGray);
         String  font_family[]   =  ge.getAvailableFontFamilyNames();
         for (int  idx  =  0;  idx < font_family.length;  idx++ )  {
                jta2.append( font_family[idx]  +  "\n");
         }

         jf.getContentPane().add(jta1, BorderLayout.CENTER);
         jf.getContentPane().add(jta2, BorderLayout.EAST);
   
         jf.pack();
         jf.setLocation(50, 50);
         jf.setVisible(true);
     }
 }      
 



実行結果



GraphicsEnvironment class
GraphicsEnvironment クラスを使って、プラットフォーム上でJavaが使用できるFontの
一覧が入手できます。

getAllFonts() method
戻り値としてFontの配列が戻されます。
getAvailableFontFamilyNames() method
戻り値としてフォントファミリー名の文字列が戻されます。


Fontオブジェクトを生成し、Fontを指定する