2014-06-12 10 views
12

Czy można używać Font Awesome w aplikacjach swingowych? Jeśli to możliwe, w jaki sposób korzystać z jego ikon z elementami swing (JButton lub JLabel). Użyłem wcześniej Font Awesome z moją aplikacją Primefaces.Świetna czcionka ze Swingiem

+0

Jeśli można legalnie dystrybuować czcionki z aplikacji Java może najprawdopodobniej załadować go i zarejestrować go w dostępnych czcionek. Następnie należy dostosować 'UIManager' lub PLAF tak, aby faktycznie * używał * tej czcionki dla przycisków, etykiet itp. –

+0

Prawdopodobny duplikat [Ustawianie domyślnej czcionki programu Swing] (http://stackoverflow.com/ q/7434845/418556) lub [Jak zaimportować czcionkę?] (http://stackoverflow.com/q/8364787/418556) –

Odpowiedz

6

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

. Przykład:

Icon icon = IconFontSwing.buildIcon(FontAwesome.SMILE_O, 40, new Color(0, 150, 0)); 

JLabel label = new JLabel(icon); 
21

powiedziałbym "tak" ...

enter image description here

  • Pobierz pakiet zip z Font Awesome
  • rozpakowania
  • skopiować plik do projektu fontawesome-webfont.ttf (w poniższym przykładzie , Użyłem go jako zasobu osadzonego)
  • Za pomocą Cheeatsheet skopiuj i wklej ikonę, której chcesz użyć do swojej aplikacji de
  • Załaduj czcionki i wyświetlacz ...

Na przykład ...

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.Font; 
import java.awt.FontFormatException; 
import java.awt.GridBagLayout; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class TestFontAwsome { 

    public static void main(String[] args) { 
     new TestFontAwsome(); 
    } 

    public TestFontAwsome() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       try (InputStream is = TestFontAwsome.class.getResourceAsStream("/fontawesome-webfont.ttf")) { 
        Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
        font = font.deriveFont(Font.PLAIN, 24f); 

        JLabel label = new JLabel("?"); 
        label.setFont(font); 

        JFrame frame = new JFrame("Testing"); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setLayout(new GridBagLayout()); 
        frame.add(label); 
        frame.pack(); 
        frame.setLocationRelativeTo(null); 
        frame.setVisible(true); 
       } catch (IOException | FontFormatException exp) { 
        exp.printStackTrace(); 
       } 
      } 
     }); 
    } 

} 

Można również użyć unicode bezpośrednio, na przykład, symbol w powyższym przykładzie jest wymieniony jako  które mogłyby być wykorzystane jako ...

JLabel label = new JLabel("\uf0c0"); 
+1

@AndrewThompson Tak, postępowałem zgodnie z instrukcjami na stronie internetowej, które powiedziały, aby skopiować wyświetlany znak, dodany za pomocą kodu Unicode – MadProgrammer

+0

Tak jak edycja, tak .. :) –