Java中Font.createFont()后如何正确调用deriveFont()?
How to call deriveFont() correctly after Font.createFont() in Java?
我想调整自定义字体的大小以匹配我的布局。
但遗憾的是 font.deriveFont(128.0f);
根本没有效果。我已经尝试了一些我发现的提示,但没有任何帮助。
System.out.println(font)
的输出等于 java.awt.Font[family=Arial,name=Arial,style=plain,size=1]
package main;
import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
public class FontTest {
public static void main(String[] args){
String fName = "fonts/arial.ttf";
InputStream is = FontTest.class.getResourceAsStream(fName);
Font font = null;
try {
font = Font.createFont(Font.TRUETYPE_FONT, is);
font.deriveFont(128.0f);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
EmptyBorder padding_h1 = new EmptyBorder(10, 10, 10, 10);
System.out.println(font);
JLabel text = new JLabel("Hallo Welt!");
text.setFont(font);
text.setBorder(padding_h1);
frame.add(text);
frame.setVisible(true);
}
}
font.deriveFont
不变font
。相反,它:
Creates a new Font
object by replicating the current Font object and applying a new size to it.
新创建的 Font
对象是 returned。
所以就这样称呼它:
font.deriveFont(128.0f);
将创建一个新的 Font
对象,并立即将其丢弃,因为您根本没有使用 return 值。
您可以将 deriveFont
调用移动到您需要新字体的位置:
text.setFont(font.deriveFont(128.0f));
或者,通过重新分配实际更改 font
:
font = font.deriveFont(128.0f);
我想调整自定义字体的大小以匹配我的布局。
但遗憾的是 font.deriveFont(128.0f);
根本没有效果。我已经尝试了一些我发现的提示,但没有任何帮助。
System.out.println(font)
的输出等于 java.awt.Font[family=Arial,name=Arial,style=plain,size=1]
package main;
import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
public class FontTest {
public static void main(String[] args){
String fName = "fonts/arial.ttf";
InputStream is = FontTest.class.getResourceAsStream(fName);
Font font = null;
try {
font = Font.createFont(Font.TRUETYPE_FONT, is);
font.deriveFont(128.0f);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
EmptyBorder padding_h1 = new EmptyBorder(10, 10, 10, 10);
System.out.println(font);
JLabel text = new JLabel("Hallo Welt!");
text.setFont(font);
text.setBorder(padding_h1);
frame.add(text);
frame.setVisible(true);
}
}
font.deriveFont
不变font
。相反,它:
Creates a new
Font
object by replicating the current Font object and applying a new size to it.
新创建的 Font
对象是 returned。
所以就这样称呼它:
font.deriveFont(128.0f);
将创建一个新的 Font
对象,并立即将其丢弃,因为您根本没有使用 return 值。
您可以将 deriveFont
调用移动到您需要新字体的位置:
text.setFont(font.deriveFont(128.0f));
或者,通过重新分配实际更改 font
:
font = font.deriveFont(128.0f);