2014-06-26 14 views

risposta

2

credo che questo sia quello che ti serve ControlFX che includono caratteri supporto impressionante. vedere il javadoc per maggiori informazioni (ma l'ho provato un giorno e funziona bene)

9

Ho raggiunto utilizzando icone FA adattando Jens Deters's approach.

Le sue routine hanno come obiettivo una composizione di gui dinamica che si oppone al modo dichiarativo di fxml. Tuttavia, his AwesomeIcon enumeration (che mappa i nomi comprensibili di FA con caratteri Unicode) si adatta perfettamente ai miei intenti.

Dovrebbe iniziare dal staticamente caricare il font nella classe principale/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); 
    } 
} 

Non si possono utilizzare i caratteri Unicode in fxml (come necessario per specificare FA icone), ma può insieme dinamico attribuisce a tali valori . Quindi avendo l'enumerazione suddetto (AwesomeIcon), il ritmo:

  1. L'importazione:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?> 
    
  2. Il nodo:

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

finisco attuazione un Icon Widget/Control/Component per riprendere la quantità di codice con due proprietà:

  1. valore: FA Nome icona;
  2. dimensioni: attributo di stile per lo stile -fx-font-size sull'etichetta.

Nuovo codice (stesso effetto):

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

Il codice per che il controllo può essere trovato here. Puoi anche trovare un esempio funzionante in quanto include il font e il codice di test.

+0

Ho provato questo, ma ottenendo simboli weired invece di icone reali. Spiacente, sono nuovo di Java e JavaFx. Inoltre sto usando esattamente la stessa versione di FontAwesom specificato nel tuo codice "Icon Enum basato su Font-Awesome v4.1.0" – ATHER

+0

Forse ti sei perso qualche passaggio. Ho appena aggiornato il codice per presentare un esempio funzionante. –

+0

Grazie lo controllerò. Anche quando ho usato ' "SceneBuilder non apre più il mio fxml e genera un errore. È normale ? – ATHER

4

Ho portato su FX la libreria Android-Iconics, sviluppata da Mike Penz. Seguiranno presto anche gli aggiornamenti (documenti) ..

Lo showcase.jar ti darà una panoramica delle icone.

Uso (Java 1.8 necessario):

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

(o vedere DialogPlayGround.java)

FxIconics on GitHub

enter image description here enter image description here

+0

Creazione di un'applicazione in JavaFX per progetto studente, Ho installato il vaso ma il mio programma si arresta in modo anomalo quando si esegue la linea con FxIconicsLabel. Ho dovuto effettuare il porting di qualcosa al di fuori della tua pagina github e come se fosse così? Molto nuovo a JavaFX. – arinh

+1

Risulta che ho avuto JDK 1.7 così ho aggiornato a 1.8 e problema risolto. Grazie per aver condiviso questo! – arinh

1

Se si utilizza SceneBuilder provare questo.

  • Innanzitutto, scaricare 'fontawesomefx'.
  • In secondo luogo, importare il vaso su SceneBuilder utilizzando il gestore Jar/FXML SceneBuilder.
  • In terzo luogo, la ricerca Library per FontAwesomeIconView, GlyphCheckBox, MaterialDesignIconView, MaterialIconView, o WeatherIconView

Esempio 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

Non dimenticare di aggiungere questi vasi al vostro percorso di classe del progetto!

Problemi correlati