web-dev-qa-db-fra.com

Comment utiliser une police géniale dans un projet fxml (javafx)

Je veux utiliser une police géniale dans mon projet, mais je ne sais pas comment utiliser une police géniale dans mon projet.

J'avais trouvé un exemple mais ils ne peuvent pas être utilisés en fxml.

police javafx génial

J'ai besoin d'aide pour l'utiliser dans mon projet en utilisant fxml

Je vous remercie.

14
user3749316

Je pense que c'est ce dont vous avez besoin ControlFX qui inclut un support impressionnant de polices. voir le javadoc pour plus d'informations (Mais je l'ai testé un jour et ça marche bien)

9
agonist_

J'ai réussi à utiliser les icônes FA en adaptant approche de Jens Deters .

Ses routines ciblent la composition graphique dynamique opposée à la manière déclarative de fxml. Néanmoins, son énumération AwesomeIcon (qui mappe les noms compréhensibles FA avec des caractères unicode) convenait parfaitement à mes intentions.

Il devrait commencer par charger statiquement la police dans la 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);
    }
}

On ne peut pas utiliser de caractères unicode en fxml (comme nécessaire pour spécifier les icônes FA), mais peut définir des attributs dynamiques avec de telles valeurs. Par conséquent, ayant l'énumération susmentionnée (AwesomeIcon), le travail a été effectué:

  1. L'importation:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?>
    
  2. Le nœud:

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

Je finis par implémenter un Icon Widget/Control/Component pour reprendre la quantité de code avec deux propriétés:

  1. valeur: Nom de l'icône FA;
  2. taille: attribut styleable pour le style -fx-font-size sur l'étiquette.

Nouveau code (même effet):

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

Le code de ce contrôle peut être trouvé ici . Vous pouvez également trouver un exemple de travail car il comprend la police et le code de test.

14

J'ai porté la bibliothèque Android-Iconics, développée par Mike Penz, sur FX. Les mises à jour suivront bientôt (documents également).

Le showcase.jar vous donnera un aperçu des icônes.

Utilisation ( Java 1.8 requis ):

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

(ou voir DialogPlayGround.Java)

FxIconics sur GitHub

enter image description hereenter image description here

6
Martin Pfeffer

Si vous utilisez SceneBuilder essayez ceci.

  • Tout d'abord, téléchargez 'fontawesomefx' .
  • Ensuite, importez le fichier jar dans SceneBuilder à l'aide du gestionnaire Jar/FXML de SceneBuilder.
  • Troisièmement, recherchez dans la bibliothèque FontAwesomeIconView, GlyphCheckBox, MaterialDesignIconView, MaterialIconView ou WeatherIconView

Exemple 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

N'oubliez pas d'ajouter ces pots au chemin de classe de votre projet!

4
Sedrick

Comme l'a dit @Sedrick, vous pouvez utiliser la bibliothèque fontawesomefx et l'utiliser dans FXML comme suit:

Remarque: JavaFX 8 et FontAwesomeFx v8.9

dashboard.fxml

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

<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane xmlns="http://javafx.com/javafx/8.0.121" 
    xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="com.example.DashboardController" 
    prefHeight="760" prefWidth="1080">

    <Button text="Close" AnchorPane.topAnchor="0" AnchorPane.leftAnchor="0">
        <graphic>
            <FontAwesomeIconView glyphName="CLOSE" glyphSize="24"/>
        </graphic>
    </Button>

</AnchorPane>

Dans le générateur de scène ressemble à ci-dessous: screenshot of iconised button

3
Omkar

Vous pouvez utiliser la bibliothèque fontawesomefx en utilisant le fichier .jar dans Scene Builder et vous pouvez parcourir toutes les icônes disponibles avec navigateur Glyphe Fontawesome-fx

1
Amine ABBAOUI