2014-06-26 20 views

Odpowiedz

2

myślę, że to jest to, czego potrzebujesz ControlFX które zawierają czcionki niesamowite wsparcie. zobacz javadoc, aby uzyskać więcej informacji (Ale przetestowałem go pewnego dnia i działa dobrze)

9

Osiągnąłem przy użyciu ikon FA, dostosowując Jens Deters's approach.

Jego rutyny cel dynamicznej kompozycji gui przeciwstawia deklaratywny sposób fxml. Niemniej jednak, his AwesomeIcon enumeration (który odwzorowuje FA zrozumiałe nazwy ze znakami Unicode) idealnie pasuje do moich zamiarów.

Należy zacząć od statycznie załadować czcionkę w głównej klasie/app:

public class App extends Application { 
    static { 
     Font.loadFont(App.class.getResource("/font/fontawesome-webfont.ttf").toExternalForm(), 10); 
    } 

    @Override 
    public void start(final Stage primaryStage) throws Exception { 
     URL resource = getClass().getResource("/fxml/app.fxml"); 
     primaryStage.setScene(new Scene((Parent) FXMLLoader.load(resource), 500, 500)); 
     primaryStage.setTitle("FontAwesomeFX demo"); 
     primaryStage.show(); 
    } 

    public static void main(String... args){ 
     launch(args); 
    } 
} 

Nie można używać znaków Unicode w fxml (ile potrzeba, aby określić FA ikon), ale dynamiczny zestaw atrybutów z takimi wartościami . Oznacza to że wyżej wspomniany wykaz surowca (AwesomeIcon), zadanie zrobiono

  1. import:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?> 
    
  2. Węzeł:

    <Label styleClass="awesome" 
         style="-fx-font-family: FontAwesome; -fx-font-size: 16.0;"> 
        <text><AwesomeIcon fx:constant="FILE"/></text> 
    </Label> 
    

I kończy się realizację Widget Ikona/Sterowanie/Komponent do wznowienia ilości kodu o dwóch właściwościach:

  1. wartość: FA Ikona Nazwa;
  2. rozmiar: stylowy atrybut stylu -fx-font-size na etykiecie.

Nowy kod (ten sam efekt):

<Icon value="FILE" size="16"/> 

Kod dla tej kontroli można znaleźć here. Można również znaleźć przykład pracy, ponieważ zawiera on kod czcionki i testowania.

+0

Próbowałem tego, ale zamiast symboli pojawiały się symbole. Przepraszamy, jestem nowy w Javie i JavaFx. Używam również dokładnie tej samej wersji FontAwesom określonej w twoim kodzie "Icon Enum opartej na Font-Awesome v4.1.0" – ATHER

+0

Być może przegapiłeś jakiś krok. Właśnie zaktualizowałem kod, aby zaprezentować działający przykład. –

+0

Dzięki temu to sprawdzę. Również gdy użyłem '' SceneBuilder nie otwiera już mojego fxml i zgłasza błąd. Czy to normalne ? – ATHER

4

Przesłałem bibliotekę Android-Iconics opracowaną przez Mike'a Penza do FX. Aktualizacje wkrótce (również dokumenty).

The showcase.jar daje przegląd ikon.

Użycie (Java 1.8 wymagany):

FxIconicsLabel labelTextDefault = 
       (FxIconicsLabel) new FxIconicsLabel.Builder(FxFontGoogleMaterial.Icons.gmd_folder_special) 
         .size(24) 
         .text("Right (default)") 
         .color(MaterialColor.ORANGE_500) 
         .build(); 

(lub zobaczyć DialogPlayGround.java)

FxIconics on GitHub

enter image description here enter image description here

+0

Tworzenie aplikacji w JavaFX dla projektu studenckiego, mam zainstalowany jar, ale mój program ulega awarii podczas działania linii z FxIconicsLabel. Czy muszę przenieść coś poza twoją stronę github i jak to zrobić? Bardzo nowość w JavaFX. – arinh

+1

Okazuje się, że miałem JDK 1.7, więc zaktualizowałem do wersji 1.8 i problem został naprawiony. Dziękujemy za udostępnienie tego! – arinh

1

Jeśli używasz SceneBuilder spróbować.

  • Najpierw pobierz 'fontawesomefx'.
  • Po drugie, zaimportuj słoik do SceneBuilder za pomocą Menedżera Jar/FXML z SceneBuilder.
  • trzecie, szukaj Biblioteka dla FontAwesomeIconView, GlyphCheckBox, MaterialDesignIconView, MaterialIconView lub WeatherIconView

Próbka FXML:

<?xml version="1.0" encoding="UTF-8"?> 

<?import de.jensd.fx.glyphs.control.GlyphCheckBox?> 
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?> 
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?> 
<?import de.jensd.fx.glyphs.materialicons.MaterialIconView?> 
<?import de.jensd.fx.glyphs.weathericons.WeatherIconView?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.layout.StackPane?> 
<?import javafx.scene.layout.VBox?> 


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1"> 
    <children> 
     <VBox maxHeight="-Infinity" maxWidth="-Infinity"> 
     <children> 
      <Label text="FontAwesomeIconView"> 
       <graphic> 
        <FontAwesomeIconView /> 
       </graphic> 
      </Label> 
      <Label text="GlyphCheckBox"> 
       <graphic> 
        <GlyphCheckBox /> 
       </graphic> 
      </Label> 
      <Label text="MaterialDesignIconView"> 
       <graphic> 
        <MaterialDesignIconView /> 
       </graphic> 
      </Label> 
      <Label text="MaterialIconView"> 
       <graphic> 
        <MaterialIconView /> 
       </graphic> 
      </Label> 
      <Label text="WeatherIconView"> 
       <graphic> 
        <WeatherIconView /> 
       </graphic> 
      </Label> 
     </children> 
     </VBox> 
    </children> 
</StackPane> 

enter image description here

Nie zapomnij dodać te słoiki do listy ścieżka klasy projektu!

Powiązane problemy