Добавить значки в JButton, используя собственный шрифт из AwesomeFont и символы юникода в Java Swing? - PullRequest
13 голосов
/ 09 марта 2012

У меня есть JButton, и я хочу добавить иконку к нему.Я хотел бы использовать иконки шрифтов из FontAwesome, который предоставляет файл шрифтов TrueType.Значок, который я пытаюсь добавить, является значком кнопки воспроизведения.Значок кнопки воспроизведения в css-файле для FontAwesome - \f04b, который, как я полагаю, переводит в \uf04b в Java.

Вот так я загружаю шрифт в конструкторе базового класса 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);
  }
}

Это то, что я получаю.Ничего.

JButton

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: см. Ответ ниже.

Ответы [ 2 ]

12 голосов
/ 09 марта 2012

Я думаю, что я решил это на самом деле.Правильный символ - \uf04b, а не \u0f4b.Упс!:)

Это работает для меня сейчас.

JButton with Play Icon

1 голос
/ 17 февраля 2016

Попробуйте jIconFont (Swing или JavaFX) на http://jiconfont.github.io/

Пример:

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

JButton button = new JButton(icon);
...