Ответ 1
Я думаю, что это то, что вам нужно ControlFX, которые включают поддержку шрифтов. см. javadoc для получения дополнительной информации (но я однажды проверил его, и он отлично работает)
Я хочу использовать шрифт в своем проекте, но я понятия не имею, как использовать шрифт в моем проекте.
Я нашел несколько примеров, но их нельзя использовать в fxml.
Мне нужна помощь, как использовать его в моем проекте с использованием fxml
Спасибо.
Я думаю, что это то, что вам нужно ControlFX, которые включают поддержку шрифтов. см. javadoc для получения дополнительной информации (но я однажды проверил его, и он отлично работает)
Я добился использования значков 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 для возобновления количества кода с двумя свойствами:
-fx-font-size
на этикетке.Новый код (тот же эффект):
<Icon value="FILE" size="16"/>
Код этого элемента управления можно найти здесь. Вы также можете найти рабочий пример, так как он включает шрифт и тестовый код.
Я портировал библиотеку 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)
Если вы используете SceneBuilder
, попробуйте это.
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>
Не забудьте добавить эти банки в свой путь к проекту!
Вы можете использовать библиотеку fontawesomefx, используя файл .jar в Scene Builder, и вы можете просматривать все доступные значки в браузере Fontawesome-fx Glyph.
Вы можете использовать библиотеку 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>