我在查找访问Windows字体或预定义字体和大小的内容时遇到了麻烦.所以对于我的java程序,我有一个JComboBox字体,大小和颜色.问题是我需要预先输入字体,大小和颜色.我怎样才能获得预定义的字体,颜色和大小?到目前为止,这是我对这种字体的看法,但不是正确的.
if (font.equals("Arial")) {
if (size.equals("8")) {
setSize = 8;
} else if (size.equals("10")) {
setSize = 10;
} else if (size.equals("12")) {
setSize = 12;
}
if (color.equals("Black")) {
setColor = Color.BLACK;
} else if (color.equals("Blue")) {
setColor = Color.BLUE;
} else if (color.equals("Red")) {
setColor = Color.red;
}
Font font = new Font("Arial", setAttribute, setSize);
Writer.setFont(font);
Writer.setForeground(setColor);
Run Code Online (Sandbox Code Playgroud) 我刚刚遇到了Java字体类的一个非常奇怪的行为.
如果我像这样创建一个普通的"Verdana"家族字体,
Font font = new Font("Verdana", Font.PLAIN, 12);
Run Code Online (Sandbox Code Playgroud)
我希望这个字体是一个非粗体字体,引用我系统上安装的普通"Verdana"字体.我使用的是Windows 7,因此相应的字体应该是"Windows/Fonts"文件夹中的"verdana.ttf".
虽然这似乎有效,但实例化的字体会在我调用时改变其行为
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
Run Code Online (Sandbox Code Playgroud)
在使用字体之前(即在字体内部绑定到任何系统字体之前).在这种情况下,字体似乎在我的系统上引用了"Verdana Bold"字体("verdanab.ttf").
这是一些测试代码,它重现了这个问题:
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class JavaFontBug {
public static void main(String[] args) {
boolean enableStrangeBug = false;
Font font = new Font("Verdana", Font.PLAIN, 12);
String text;
if (enableStrangeBug) {
// this line enables the bug:
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
text = "Some Bold Text?!";
} else{
text = "Some Text";
}
System.out.println("Font: " + font);
System.out.println("Font name: " + font.getFontName()); …Run Code Online (Sandbox Code Playgroud)