【问题标题】:How to set a custom font's size and other attributes (bold, italic, etc) in Java SWING如何在 Java SWING 中设置自定义字体的大小和其他属性(粗体、斜体等)
【发布时间】:2011-11-01 13:42:39
【问题描述】:

通常,当我初始化要在我的 SWING 应用程序中使用的字体时,我会这样做:

public static final Font TITLEFONT = new Font("Calibri", Font.BOLD, 40);

现在,由于我使用的是 .ttf 文件中的一些自定义字体,因此我必须做一些不同的事情。我这样初始化字体:

try
{
    InputStream is = OptionsValues.class.getResourceAsStream("fonts//KOMIKAX_.ttf");
    TITLEFONT = Font.createFont(Font.TRUETYPE_FONT, is);
}
catch (Exception ex)
{
    ex.printStackTrace();
    System.err.println("Font not loaded.  Using Calibri font.");
    TITLEFONT = new Font("Calibri", Font.BOLD, 40);
}

我很确定它正确地初始化了它(我不能确定,因为它太小了,我看不到),但我想知道如何手动设置字体的大小(如果它是粗体/其他属性)以这种方式加载字体时。

提前非常感谢!

【问题讨论】:

    标签: java swing fonts custom-font


    【解决方案1】:

    createFont 返回一个字体,您可以在此调用deriveFont(...),传入一个浮点数作为磅值,或者一个 int 和浮点数作为字体样式和磅值。我不能说它是否适合您的特定情况,但值得一试。

    例如,

    InputStream is = OptionsValues.class.getResourceAsStream("fonts//KOMIKAX_.ttf");
    TITLEFONT = Font.createFont(Font.TRUETYPE_FONT, is).deriveFont(Font.BOLD, 40f);
    

    【讨论】:

    • @Adam:你试过的时候有用吗?同样,我没有在这种特殊情况下使用它。
    • 完美运行!在我的 JLabel 中似乎有点像素化,但我认为这就是字体的制作方式。再次感谢您的帮助!
    • 根据具体情况,RendereringHints 可能会有所帮助。
    • @trashgod 我尝试在创建 JLabel 时添加一个匿名内部类来覆盖paintComponents 并使用 Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);它似乎没有改变任何东西,有什么想法吗?
    • @Adam:也许是错误的抗锯齿。您是否尝试过 KEY_TEXT_ANTIALIASING 和 VALUE_TEXT_ANTIALIAS_ON?
    【解决方案2】:

    我会简单地使用:

    字体.斜体

    字体.BOLD

    Font.PLAIN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2021-07-06
      • 2016-08-10
      • 1970-01-01
      • 2018-08-08
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多