Впервые знакомлюсь с combobox. По туториалу сделал отображение строковых значений в combobox.
Пишу программу на JavaFX
Мне нужно,чтобы в combobox отображались мои кастомные шрифты,которые находятся в папке с программой, а дальше чтобы при выборе одного из этих шрифтов, шрифт применялся к тексту в Label
Как это сделать?
Font Controller.java:
package card;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import java.net.URL;
import java.util.ResourceBundle;
public class FontController implements Initializable {
@FXML private ComboBox<String> fontSelector;
@FXML private Label fontLabel;
ObservableList<String> list = FXCollections.observableArrayList("Apple", "Banana", "Peach", "Juice");
@Override
public void initialize(URL location, ResourceBundle resources) {
fontSelector.setItems(list);
}
public void changeLabel(ActionEvent event) {
fontLabel.setText(fontSelector.getValue());
}
}
FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="300.0" prefWidth="500.0" style="-fx-background-color: green;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="card.FontController">
<children>
<ComboBox fx:id="fontSelector" layoutX="14.0" layoutY="54.0" onAction="#changeLabel" prefWidth="150.0" promptText="Select Font" />
<Label fx:id="fontLabel" layoutX="155.0" layoutY="180.0" prefHeight="67.0" prefWidth="190.0" text="Selected Font" textFill="WHITE">
<font>
<Font size="23.0" />
</font>
</Label>
</children>
</AnchorPane>