私は中に複数行の文字列変数を定義しましたfx:define
:
<fx:define>
<String fx:id="LABEL_01" fx:value="${'liczba czytelników\nzarejestrowanych'}"/>
</fx:define>
今私は、それを参照したいですLabel
。使用してこれを行う方法LABEL_01
としてtext
値はありますか?これは動作しません。
<Label text="$LABEL_01"/>
コードのこの部分が機能することを言及したいです:
<Label text="${'liczba czytelników\nzarejestrowanych'}"/>
Javaコードは、(なぜそれべきではないのですか?)動作します:
Label labelLiczbaCzytelnikowZarejestrowanych = new Label("liczba czytelników\nzarejestrowanych");
私はFXMLでそれを行うたい。
コードのこの部分が機能することを言及したいです:
<Label text="${'liczba czytelników\nzarejestrowanych'}"/>
あなたはそれだと思うようにこれはおそらく動作しません。
${}
構文は次のとおりであるバインディング式。これは、バインド(targetプロパティをtext
間で発現します){}
。あなたの式があるので'string'
、使用している文字列定数を。式を解析するとき、それは解釈する\n
改行文字として。基本的に、文字列定数と同じように扱われる文字列リテラルの Javaコードです。
注:あなたが見ることができるtext
プロパティは、注入することによって、バインドされているLabel
コントローラにして照会textProperty().isBound()
。
いくつかの同等のJavaコードは次のようになります。
Label label = new Label();
label.textProperty()
.bind(Bindings.createStringBinding(() -> "liczba czytelników\nzarejestrowanych"));
<String fx:id="LABEL_01" fx:value="${'liczba czytelników\nzarejestrowanych'}"/>
${}
構文は次のとおりの文脈では特別な意味を持ちませんfx:value
。これが何をするか(ターゲット・タイプを作成しているString
クラスの静的の使用)valueOf(String)
方法を。引数valueOf
で定義された方法は、リテラル値であるfx:value
属性。これは、表現結合構文を意味して\n
いるとして使用されています。\n
文字通り使用するのと同じ「n」は、バックスラッシュである"\\n"
Javaで。
FXMLファイルは、そのコア、単にXMLファイルで、です。私の知る限り、FXMLフォーマットはの特別なマルチラインのサポート外に提供していない文字列定数をバインディング式に。ただし、改行文字(すなわち挿入するためにXMLエスケープを使用することができますあなたのソリューションを)。