import java.util.List; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.Scene; import javafx.scene.text.*; import javafx.scene.control.ComboBox; import javafx.scene.layout.VBox; import javafx.application.Application; import javafx.stage.Stage; public class FontFamiliesApp extends Application { static final String multilingual = "(Latin) English français Deutsch Português italiano svenska español\n" + "(zh) 简体中文\n" + "(zt) 繁體中文\n" + "(ja) 日本語\n" + "(ko) 한국인\n" + "(he) \u05e2\u05d1\u05e8\u05d9\u05ea\n" + "(ar) \u0627\u0644\u0639\u0631\u0628\u064a\u0629\n" + "(th) \u0e44\u0e17\u0e22\n" + "(hi) \u0939\u093f\u0902\u0926\u0940 "; public static void main(String[] args) { Application.launch(FontFamiliesApp.class, args); } Text text; double fontSize = 18.0; double space = 10.0; ComboBox cb; @Override public void start(Stage stage) { VBox root = new VBox(); Scene scene = new Scene(root, 600, 400); stage.setScene(scene); cb = new ComboBox(); List fontNames = Font.getFontNames(); for (int i = 0; i < fontNames.size(); i++) { cb.getItems().add(fontNames.get(i)); } cb.getSelectionModel().select(fontNames.get(0)); cb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { public void changed(ObservableValue ov, Object t, Object t1) { String fontName = (String) cb.getSelectionModel().getSelectedItem(); text.setFont(new Font(fontName, fontSize)); } }); text = new Text(multilingual); text.setFont(new Font(fontNames.get(0), fontSize)); root.getChildren().addAll(cb, text); root.setSpacing(space); cb.requestFocus(); stage.show(); } }