在JavaSwing中使用AwesomeFont中的自定义字体和unicode字符向JButton添加图标?

在JavaSwing中使用AwesomeFont中的自定义字体和unicode字符向JButton添加图标?,java,swing,fonts,jbutton,font-awesome,Java,Swing,Fonts,Jbutton,Font Awesome,我有一个JButton,我想给它添加一个图标。我想使用FontAwesome中基于字体的图标,它提供了TrueType字体文件。我试图添加的图标是播放按钮图标。FontAwesome的css文件中的播放按钮图标是\f04b,我认为它在Java中被翻译成\uf04b 这就是我在by IconButton基类的构造函数中加载字体的方式 public class IconButton extends JButton { public IconButton() { try { I

我有一个JButton,我想给它添加一个图标。我想使用FontAwesome中基于字体的图标,它提供了TrueType字体文件。我试图添加的图标是播放按钮图标。FontAwesome的css文件中的播放按钮图标是
\f04b
,我认为它在Java中被翻译成
\uf04b

这就是我在by IconButton基类的构造函数中加载字体的方式

public class IconButton extends JButton {
  public IconButton() {
    try {
      InputStream in = this.getClass().getResourceAsStream("/fontawesome-webfont.ttf");
      Font ttfBase = Font.createFont(Font.TRUETYPE_FONT, in);
      Font ttfReal = ttfBase.deriveFont(Font.BOLD, 24);
      setFont(ttfReal);
    } catch (FontFormatException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
}
在实现类StartButton中,我就是这样设置文本的

public class StartButton extends IconButton {
  public StartButton() {
    setText(String.valueOf('\u0f4b'));
    setForeground(Color.BLACK);
  }
}
这就是我得到的。没什么

非常感谢您的帮助


编辑:见下面的答案。

我想我已经解决了这个问题。正确的字符是
\uf04b
而不是
\u0f4b
。哎呀!:)

这是我现在的工作

在以下位置尝试jIconFont(Swing或JavaFX)

例如:

Icon icon = IconFontSwing.buildIcon(FontAwesome.FLOPPY_O, 15);

JButton button = new JButton(icon);

第一个代码不会编译(
createFont
抛出既没有捕获也没有声明的异常),而且所示的两个类的设计似乎很糟糕(1.第一个类可以创建一次字体并将其缓存为静态属性2.如果它围绕文本的字符串定义了一个构造函数,调用超级构造函数,则可以完全避免第二个类)。或者A.由于
IconButton
设置了
Font
StartButton
设置了前景色,使用标准
JButton
并将每个按钮交给一个方法来配置外观。B.使用新的PLAF或调整
UIManager
为了减少噪音,代码没有逐字从应用程序中提取,但为了完整性起见,我已经更新了它以包含try/catch。我还想补充一点,我同意它应该只创建一次字体。好建议。我必须查看PLAF和UIManger。“代码不是逐字从应用程序中提取的”可能最好用文字或伪代码(清楚地标记为这样)来描述它在这种情况下,请不要复制和粘贴多个问题的完全相同的答案。我很抱歉。当多个问题的答案完全相同时,我应该如何继续?