在JavaSwing中使用AwesomeFont中的自定义字体和unicode字符向JButton添加图标?
我有一个JButton,我想给它添加一个图标。我想使用FontAwesome中基于字体的图标,它提供了TrueType字体文件。我试图添加的图标是播放按钮图标。FontAwesome的css文件中的播放按钮图标是在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
\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。“代码不是逐字从应用程序中提取的”可能最好用文字或伪代码(清楚地标记为这样)来描述它在这种情况下,请不要复制和粘贴多个问题的完全相同的答案。我很抱歉。当多个问题的答案完全相同时,我应该如何继续?