有没有办法在Java中获取系统默认字体名称?默认字体可能与操作系统不同。因此,如果我们使用字体Arial并且jar在Linux中运行而没有安装Arial字体,则会造成麻烦。
答案 0 :(得分:25)
试试这个:
private final Font FONT = new JLabel().getFont();
答案 1 :(得分:11)
JavaFX让这更容易:
import javafx.scene.text.Font;
然后使用:
Font defaultFont = Font.getDefault();
或
// Where 14 is the font size
Font defaultFont = new Font(14);
答案 2 :(得分:5)
使用定义的Font
constants,例如SERIF
/ SANS_SERIF
等。
答案 3 :(得分:5)
我目前正在使用它来获取默认字体,虽然我不想使用图形对象来获取它:
private final Font getFont()
{
Graphics g = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB).getGraphics();
Font font = new Font(g.getFont().toString(), 0, 12);
g.dispose();
return font;
}
答案 4 :(得分:4)
我认为没有办法检索系统默认字体(例如,在Swing / AWT中,字体通常与当前的LAF和组件相关联),但如果您关注的是字体兼容性 - 您可以检查您对所有系统字体使用的字体:
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] allFonts = e.getAllFonts();
如果不存在则进行“故障转移”选择。
答案 5 :(得分:4)
在这里查看public static Font decode(String str)。当decode方法接收空指针作为参数时,它返回“Dialog”字体,该字体通常是系统字体。
答案 6 :(得分:3)
getFont()返回当前字体,这是(通常是?)默认字体。 我这样做是为了增加字体大小。
public MyTextArea(){
Font currentFont = super.getFont();
String fontName = currentFont.getFontName();
int fontStyle = currentFont.getStyle();
int fontSize = currentFont.getSize() + 4;
super.setFont(new Font(fontName, fontStyle, fontSize));
}
答案 7 :(得分:0)
在Windows中,Segoe UI
访问http://www.apaddedcell.com/sites/www.apaddedcell.com/files/fonts-article/final/index.html以查看预装字体列表。
我选择了Verdana