2012-03-09 13 views
13

Mam przycisk J i chcę dodać do niego ikonę. Chciałbym używać czcionek opartych na FontAwesome, które zapewniają plik czcionki TrueType. Ikona, którą próbuję dodać, to ikona przycisku odtwarzania. Ikona przycisku odtwarzania w pliku css dla FontAwesome to \f04b, którą uważam za przetłumaczoną na język \uf04b w Javie.Dodaj ikony do JButton przy użyciu niestandardowej czcionki od znaków AwesomeFont i Unicode w Java Swing?

Oto jak ładuję czcionkę w konstruktorze klasy bazowej 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(); 
    } 
    } 
} 

W klasie wykonawczej StartButton tak ustawiam tekst.

public class StartButton extends IconButton { 
    public StartButton() { 
    setText(String.valueOf('\u0f4b')); 
    setForeground(Color.BLACK); 
    } 
} 

To jest to, co otrzymuję. Nic.

JButton

Każda pomoc jest mile widziane.

EDYCJA: Zobacz odpowiedź poniżej.

+0

To pierwszy kod Wold nie skompilować ('createFont' rzuca wyjątków, które nie mają złowione ani zadeklarowanej), i wygląda na straszny projekt dwóch pokazanych klas (1. pierwsza klasa mogłaby utworzyć czcionkę raz i cacheować ją jako statyczny atrybut 2. jeśli zdefiniowałaby konstruktora opartego na łańcuchu dla tekstu, wywołując super konstruktor, mogłaby avo id całkowicie drugiej klasy). Alternatywnie A., ponieważ 'IconButton' ustawia' Font' i 'StartButton' ustawia kolor pierwszego planu, używa standardowego' JButton' i podaje każdemu z nich metodę konfiguracji wyglądu. B. Użyj nowego PLAF lub dostosuj 'UIManager' –

+0

Kod nie został wyciągnięty dosłownie z aplikacji w celu zmniejszenia szumów, ale dla kompletności sake zaktualizowałem go tak, aby zawierał próbę/catch. Dodam też, że zgadzam się, że powinien on raz stworzyć czcionkę. Dobry pomysł. Będę musiał sprawdzić PLAF i UIManger. –

+0

* "Kod nie został wyciągnięty dosłownie z aplikacji" * Prawdopodobnie lepiej opisać go słowami lub pseudokodem (wyraźnie oznaczonym jako taki) niż kod Java w tym przypadku. Dobry telefon do aktualizacji. :) –

Odpowiedz

12

Myślę, że faktycznie to rozwiązałem. Prawidłowy znak to \uf04b, a nie \u0f4b. Whoops! :)

To działa teraz dla mnie.

JButton with Play Icon

+2

Możesz i powinieneś zaakceptować własne odpowiedzi! (Nie było bloga na ten temat na blogu gdzieś gdzieś) – JavaAndCSharp

1

Spróbuj jIconFont (huśtawka lub JavaFX) w http://jiconfont.github.io/

Przykład:

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

JButton button = new JButton(icon); 
+1

Proszę nie kopiować i wklejać dokładnie tę samą odpowiedź na wiele pytań – Andy

+0

Moje przeprosiny. Jak mam postępować, gdy odpowiedź na wiele pytań jest dokładnie taka sama? –

Powiązane problemy