【问题标题】:Cant add custom font with using .getResource() - Java无法使用 .getResource() 添加自定义字体 - Java
【发布时间】:2015-02-09 19:30:18
【问题描述】:

我要将我的项目转换为 jar 文件。我正在使用this.getClass().getResource(""); 设置我所有的图像和其他外部文件

添加图片没问题;

xButton.setIcon(new ImageIcon(this.class.getResource("/a/b/c/d/e.png")));

但是我不能用这个方法注册字体;

...
        private final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
...


try {

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(this.getClass().getResource("fonts/f1.ttf"))));

    // or either

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(MYCLASS.class.getResource("/a/b/c/d/f1.ttf"))));

    // or either

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(this.class.getResource("/a/b/c/d/f1.ttf"))));

    } catch (FontFormatException e2) {
            e2.printStackTrace();
    } catch (IOException e2) {
        e2.printStackTrace();
}

我从 Eclipse 得到的错误是:构造函数 File(URL) 未定义。

【问题讨论】:

    标签: java fonts getresource


    【解决方案1】:

    我找到了解决办法,

    我创建了一个InputStream 并在将字体注册到系统时使用它。

    工作代码是;

    //code..
    private final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    final InputStream is = MYCLASS.class.getResourceAsStream("fonts/f1.ttf");
    final InputStream is2 = MYCLASS.class.getResourceAsStream("fonts/f2.ttf");
    //code..
    
    try {
    
        ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, is));
        ge.registerFont(Font.createFont(Font.TRUETYPE_FONT,is2 ));
    
    } catch (FontFormatException e2) {
        e2.printStackTrace();
    } catch (IOException e2) {
        e2.printStackTrace();
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2014-05-09
      • 1970-01-01
      • 2010-09-26
      相关资源
      最近更新 更多