Как использовать шрифт awesome в проекте fxml (javafx)

Я хочу использовать шрифт в своем проекте, но я понятия не имею, как использовать шрифт в моем проекте.

Я нашел несколько примеров, но их нельзя использовать в fxml.

шрифт потрясающий javafx

Мне нужна помощь, как использовать его в моем проекте с использованием fxml

Спасибо.

Ответ 1

Я думаю, что это то, что вам нужно ControlFX, которые включают поддержку шрифтов. см. javadoc для получения дополнительной информации (но я однажды проверил его, и он отлично работает)

Ответ 2

Я добился использования значков FA, адаптировав подход Jens Deters.

Его подпрограммы нацелены на динамическую композицию gui, противоположную декларативному пути fxml. Тем не менее, его перечисление AwesomeIcon (которое отображает FA понятные имена с символами Unicode) идеально подходит для моих целей.

Он должен начинаться с статической загрузки шрифта в классе main/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);
    }
}

Нельзя использовать символы unicode в fxml (при необходимости указывать значки FA), но может динамически устанавливать атрибуты с такими значениями. Следовательно, имея вышеупомянутое перечисление (AwesomeIcon), работа была выполнена:

  • Импорт:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?>
    
  • node:

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

В результате я создаю Icon Widget/Control/Component для возобновления количества кода с двумя свойствами:

  • значение: Имя значка FA;
  • размер: атрибут styleable для стиля -fx-font-size на этикетке.

Новый код (тот же эффект):

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

Код этого элемента управления можно найти здесь. Вы также можете найти рабочий пример, так как он включает шрифт и тестовый код.

Ответ 3

Я портировал библиотеку Android-Iconics, разработанную Майком Пензом, на FX. Скоро появятся обновления (также документы).

Showcase.jar предоставит вам обзор значков.

Использование (требуется Java 1.8):

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

(или см. DialogPlayGround.java)

FxIconics на GitHub

enter image description here enter image description here

Ответ 4

Если вы используете SceneBuilder, попробуйте это.

  • Сначала загрузите 'fontawesomefx'.
  • Во-вторых, импортируйте jar в SceneBuilder с помощью SceneBuilder Jar/FXML Manager.
  • В-третьих, поиск в библиотеке FontAwesomeIconView, GlyphCheckBox, MaterialDesignIconView, MaterialIconView или WeatherIconView

Образец 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>

введите описание изображения здесь

Не забудьте добавить эти банки в свой путь к проекту!

Ответ 5

Вы можете использовать библиотеку fontawesomefx, используя файл .jar в Scene Builder, и вы можете просматривать все доступные значки в браузере Fontawesome-fx Glyph.

Ответ 6

Вы можете использовать библиотеку fontawesomefx и использовать ее в FXML следующим образом:

Примечание: JavaFX 8 и 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>

В сцене строитель выглядит так: screenshot of iconised button