我制作了JavaFX应用程序。我在组合框中有系统字体。 Combobox在我的计算机上很好地显示了字体,但是当我在其他Windows机器上启动应用程序时,combobox不显示系统字体,每种字体仅显示“系统”名称。
我在其他计算机上安装了每种字体,并仔细检查了它们的存在。
我该如何解决?
我还认为我以错误的方式添加了系统字体,因为每次我单击组合框字体时,都会在一秒钟后显示。这就像单击组合框时的延迟一样。
计算机上的组合框:
其他Windows计算机上的组合框:
@FXML private ComboBox<Font> fontSelector;
//getting font families
fontSelector.getItems().addAll(Font.getFamilies().stream().map(name -> Font.font(name, 14)).toArray(Font[]::new));
//display 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());
}