Есть лейбл с текстом и combobox в приложении. Когда кликаю на combobox выплывает список шрифтов. При клике на шрифт, шрифт текста лейбла изменяется на выбранный. На данный момент у меня combobox работает нормально, но там отображаются только шрифты, которые установлены в систему(WIndows/fonts) мне же надо,чтобы в combobox отображались только шрифты из папки, которая находится в папке программы.
Система - Windows 10
Как отобразить свои кастомные шрифты в combobox?Если в combobox не возможно положить свои кастомные шрифты из папки программы, то можно ли изменить путь к системной папке со шрифтами?@FXML private ComboBox<Font> fontSelector;
@FXML private Label fontLabel;
//get font family and size
private static Font getFont(Font font, Integer size) {
return Font.font(font == null ? null : font.getFamily(), size == null ? -1d : size.doubleValue());
}
//add font families to combboox
fontSelector.getItems().addAll(Font.getFamilies().stream().map(name -> Font.font(name, 14)).toArray(Font[]::new));
// bind font based on size/family
fontLabel.fontProperty()
.bind(Bindings.createObjectBinding(() -> getFont(fontSelector.getValue(), size.getValue()),
fontSelector.valueProperty(), size.valueProperty()));
//display and render font families looks in combobox
class FontListCell extends ListCell<Font> {
@Override
public void updateItem(Font item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item.getFamily());
setFont(item);
} else {
setText("");
setFont(Font.font(12));
}
}
}
fontSelector.setCellFactory(lv -> new FontListCell());
fontSelector.setButtonCell(new FontListCell());
Структура проекта: