FXから複数行の文字列変数を参照してください:ブロックを定義

スクリーム

私は中に複数行の文字列変数を定義しました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エスケープを使用することができますあなたのソリューションを)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=236713&siteId=1