import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.application.Application; import javafx.stage.Stage; public class MixedTextApp extends Application { static final String digital_trailing = "\u0639\u0634\u0631\u0629 1112"; static final String digital_leading = "1112 \u0639\u0634\u0631\u0629"; static final String punctuation_trailing = "\u0639\u0634\u0631\u0629:"; static final String punctuation_leading = ":\u0639\u0634\u0631\u0629"; static final String bracket_around = "(\u0639\u0634\u0631\u0629)"; static final String bracket_trailing = "\u0639\u0634\u0631\u0629 (arabic)"; static final String bracket_leading = "(arabic) \u0639\u0634\u0631\u0629"; static final String latin_trailing = "\u0639\u0634\u0631\u0629 arabic"; static final String latin_leading = "arabic \u0639\u0634\u0631\u0629"; static final String symbol_trailing = "\u0639\u0634\u0631\u0629 20%"; static final String symbol_leading = "*#@ \u0639\u0634\u0631\u0629"; static final String asian_trailing = "\u0639\u0634\u0631\u0629 简繁體한"; static final String asian_leading = "简繁體한 \u0639\u0634\u0631\u0629"; static final String thai_trailing = "\u0639\u0634\u0631\u0629 ไทย हिंदी"; static final String thai_leading = "ไทย हिंदी \u0639\u0634\u0631\u0629"; public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { primaryStage.setScene(new MixedTextScene()); primaryStage.setTitle("Mixed Text Test (" + System.getProperty("javafx.runtime.version") + ")"); primaryStage.show(); } public class MixedTextScene extends Scene { double space = 10.0; TextField textfield[]; Text text[]; Label label[]; public MixedTextScene() { super(new VBox(), 600, 600); VBox root = (VBox) getRoot(); root.setStyle("-fx-font-size: 16"); Label h1 = new Label("Type"); Label h2 = new Label("TextField"); HBox line[] = new HBox[16]; label = new Label[15]; label[0] = new Label("digital trailing"); label[1] = new Label("digital leading"); label[2] = new Label("punctuation trailing"); label[3] = new Label("punctuation leading"); label[4] = new Label("bracket around"); label[5] = new Label("bracket trailing"); label[6] = new Label("bracket leading"); label[7] = new Label("symbol trailing"); label[8] = new Label("symbol leading"); label[9] = new Label("latin trailing"); label[10] = new Label("latin leading"); label[11] = new Label("asian trailing"); label[12] = new Label("asian leading"); label[13] = new Label("thai trailing"); label[14] = new Label("thai leading"); textfield = new TextField[15]; textfield[0] = new TextField(digital_trailing); textfield[1] = new TextField(digital_leading); textfield[2] = new TextField(punctuation_trailing); textfield[3] = new TextField(punctuation_leading); textfield[4] = new TextField(bracket_around); textfield[5] = new TextField(bracket_trailing); textfield[6] = new TextField(bracket_leading); textfield[7] = new TextField(symbol_trailing); textfield[8] = new TextField(symbol_leading); textfield[9] = new TextField(latin_trailing); textfield[10] = new TextField(latin_leading); textfield[11] = new TextField(asian_trailing); textfield[12] = new TextField(asian_leading); textfield[13] = new TextField(thai_trailing); textfield[14] = new TextField(thai_leading); for (int i = 0; i < 16; i++) { line[i] = new HBox(); line[i].setSpacing(space); if (i == 0) { line[0].getChildren().addAll(h1, h2); h1.setMinWidth(160); h2.setMinWidth(170); } else { textfield[i - 1].setMinWidth(160); label[i - 1].setMinWidth(160); line[i].getChildren().addAll(label[i - 1], textfield[i - 1]); } } root.getChildren().addAll(line); root.setSpacing(space); } } }