2016-11-26 11 views
0

私はコンボボックスから値を選択してラベルのフォント(node)を割り当てようとしています。コンボボックスにはいくつかのオプションしかありません。そのため、このアプリで使用するのは安全です。ComboboxからJavaFX Labelフォントを割り当てても機能しません

すべて正常に動作し、コンボボックスからのすべての正しい文字列値がプルされ、ラベルに割り当てられています。しかし、ラベル内のフォントは変更されません。ラベルからフォントを出力すると、アクティブなフォントは依然としてシステムのデフォルトです。 fontSizeだけを編集する別の方法があり、うまくいきます。実際の文字列値は無効でなければなりません。しかし、エラーはスローされず、システムのインストールされたフォントからコンボボックスのリスト名が取得されました。

ユースケースとコードは以下のとおりです。私は何が欠けていますか?

1)フォントを選択して)が変更され、[OK]をクリックします)

String font = String.valueOf(combobox_font.getValue()); 

label.setFont(Font.font(font)); 

注意を(コードスニペットをラベルに割り当てられた

enter image description here

2):私のプログラムのために私はフォントの種類とサイズを別々に割り当てようとしていますが、フォントサイズを値に割り当ててみました。

label.setFont(Font.font(font, fontSize)); ///fontSize is a double value gotten from teh textfled above 

3)Outbutラベルフォント(それでもシステムのデフォルト)

Font[name=System Regular, family=System, style=Regular, size=12.0] 

答えて

0

あなたの代わりに家族の名前のフォント名を指定している場合は、あなたがすべてのことから、Fontのconstuctorを使用する必要があります静的メソッドは、フォントファミリを期待:

@Override 
public void start(Stage primaryStage) { 
    ComboBox<String> fontChoice = new ComboBox<>(FXCollections.observableList(Font.getFontNames())); 

    Spinner<Integer> spinner = new Spinner<>(1, 40, 12); 

    Text text = new Text("Hello World!"); 

    text.fontProperty().bind(Bindings.createObjectBinding(() -> new Font(fontChoice.getValue(), spinner.getValue()), spinner.valueProperty(), fontChoice.valueProperty())); 

    HBox hBox = new HBox(fontChoice, spinner); 
    StackPane.setAlignment(hBox, Pos.TOP_CENTER); 

    StackPane root = new StackPane(hBox, text); 

    Scene scene = new Scene(root, 400, 400); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

静的メソッドを使用するには、家族の名前を使用します。

@Override 
public void start(Stage primaryStage) { 
    ComboBox<String> familyChoice = new ComboBox<>(FXCollections.observableList(Font.getFamilies())); 

    Spinner<Integer> spinner = new Spinner<>(1, 40, 12); 

    Text text = new Text("Hello World!"); 
    text.fontProperty().bind(Bindings.createObjectBinding(() -> Font.font(familyChoice.getValue(), spinner.getValue()), spinner.valueProperty(), familyChoice.valueProperty())); 

    HBox hBox = new HBox(familyChoice, spinner); 
    StackPane.setAlignment(hBox, Pos.TOP_CENTER); 

    StackPane root = new StackPane(hBox, text); 

    Scene scene = new Scene(root, 400, 400); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
+0

それでした。私は 'font.font(font)'を 'new Font(font、fontSize)'に置き換えました。それは魅力的です。ありがとう。 – LazyBear

関連する問題