avatar

大兜

右手寫程式,左手寫音樂

列出系統中 Java 可用字型

由於 GUI 無論文字,都是用「畫」出來的,第一件事情就是要取得自身的圖形環境(GraphicaEnvironment)

要取得它可以用 GraphicsEnvironment 類別中的 static function getLocalGraphicsEnvironment(),然後再呼叫 getAvailableFontFamilyNames(),這個方法會回傳一個字串陣列,存放著圖形環境中所有的 font families。

String[] fontList = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

以下是筆者寫的一個小程式可以印出所有的字型@@

/////////////////////////////////////////////////////////////////////
// Copyright (c) 2010 Do-Some Studio All rights reserved. //
// Author: Tony Jian                                      //
/////////////////////////////////////////////////////////////////////
import java.awt.*;
import javax.swing.*;

public class FontList extends JFrame{
	static String[] fontList = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
	static JLabel[] labelList = new JLabel[fontList.length];
	
	public FontList(){
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panel = new JPanel(new GridLayout(fontList.length,1));
		for(int i=0;i<fontList.length;i++){
			labelList[i] = new JLabel(fontList[i]);
			labelList[i].setFont(new Font(fontList[i], Font.PLAIN, 24));
			panel.add(labelList[i]);
		}
		add(new JScrollPane(panel));
		pack();
		setVisible(true);
	}
	
	public static void main(String[] args){
		FontList f = new FontList();
		for(String i:fontList) System.out.println(i);
	}
}