本文目錄一覽:
Java 關於Font類的字體設置
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import java.awt.Label;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;import javax.swing.JLabel;public class Test_24 extends Frame implements ItemListener { private static final long serialVersionUID = 1L;
Choice c;
JLabel l; public static void main(String[] args) {
new Test_24(); } public Test_24() {
super();
initialize();
} private void initialize() {
this.setSize(300, 200);
this.setTitle(“Frame”);
GraphicsEnvironment g = GraphicsEnvironment
.getLocalGraphicsEnvironment();
String fontName[] = g.getAvailableFontFamilyNames();
c = new Choice();
for (int i = 0; i fontName.length; i++)
c.add(fontName[i]);
l = new JLabel(“”, JLabel.CENTER);
this.add(c, BorderLayout.NORTH);
this.add(l, BorderLayout.CENTER);
this.setVisible(true);
c.addItemListener(this);
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
} public void itemStateChanged(ItemEvent e) {
String name = (String) e.getItem();
System.out.println(name);
Font f = new Font(name, Font.ITALIC, 40);
l.setForeground(Color.red);
l.setFont(f);
l.setText(“測試字體”);
double x=l.getLocation().getX();
double y=l.getLocation().getY();
int h = l.getSize().height;
int w = l.getSize().width;
System.out.println(x+”,”+y);
System.out.println(h+”,”+w);
}}
為什麼java 中我用了font沒有改變字體只能改變自形和大小
很簡單,因為你把一個表達式fontName[id_font]用雙引號括起來了。變成了一個字元串常量”fontName[id_font]” . 而用這個字元串常量,根本就找不到對應字體,所以無法更改字體
解決辦法去掉雙引號即可
java中如何讀取ttf字體文件,生成Font數組
1.讀取
import java.awt.Font;
import java.io.File;
import java.io.FileInputStream;
public class Loadfont
{
public static Font loadFont(String fontFileName, float fontSize) //第一個參數是外部字體名,第二個是字體大小
{
try
{
File file = new File(fontFileName);
FileInputStream aixing = new FileInputStream(file);
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, aixing);
Font dynamicFontPt = dynamicFont.deriveFont(fontSize);
aixing.close();
return dynamicFontPt;
}
catch(Exception e)//異常處理
{
e.printStackTrace();
return new java.awt.Font(“宋體”, Font.PLAIN, 14);
}
}
public static java.awt.Font Font(){
String root=System.getProperty(“user.dir”);//項目根目錄路徑
Font font = Loadfont.loadFont(root+”/data/PRISTINA.ttf”, 18f);//調用
return font;//返回字體
}
public static java.awt.Font Font2(){
String root=System.getProperty(“user.dir”);//項目根目錄路徑
Font font = Loadfont.loadFont(root+”/data/XXXX.ttf”, 18f);
return font;//返回字體
}
}
2.轉換:
public static String ascii2native(String ascii) {
int n = ascii.length() / 6;
StringBuilder sb = new StringBuilder(n);
for (int i = 0, j = 2; i n; i++, j += 6) {
String code = ascii.substring(j, j + 4);
char ch = (char) Integer.parseInt(code, 16);
sb.append(ch);
}
return sb.toString();
}
原創文章,作者:EHAUB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324979.html