Java 参考fx:define块中的多行字符串变量

Java 参考fx:define块中的多行字符串变量,java,javafx,fxml,Java,Javafx,Fxml,我在fx:define中定义了多行字符串变量: <fx:define> <String fx:id="LABEL_01" fx:value="${'liczba czytelników\nzarejestrowanych'}"/> </fx:define> 希望提及这段代码的工作原理: <Label text="${'liczba czytelników\nzarejestrowanych'}"/> 但是我想在FXML中实现它。我可以使

我在
fx:define
中定义了多行字符串变量:

<fx:define>
    <String fx:id="LABEL_01" fx:value="${'liczba czytelników\nzarejestrowanych'}"/>
</fx:define>
希望提及这段代码的工作原理:

<Label text="${'liczba czytelników\nzarejestrowanych'}"/>
但是我想在FXML中实现它。

我可以使用
&xD
解决FXML中的多行问题

<fx:define>
    <String fx:id="LABEL_01" fx:value="liczba czytelników&#xD;zarejestrowanych'}"/>
</fx:define>
这是一种解决方案,但我仍然想知道如何引用变量
“${'liczba czytelników\nzarejestrowanych'}”

希望提及这段代码的工作原理:

<Label text="${'liczba czytelników\nzarejestrowanych'}"/>

这可能不像你想象的那样有效

${}
语法是一种语法。这将目标属性(
text
)绑定到
{}
之间的表达式。由于表达式是一个
“字符串”
,因此使用的是字符串常量。解析表达式时,它会将
\n
解释为换行符。基本上,字符串常量在Java代码中被视为字符串文本

注意:您可以通过将
标签
注入控制器并查询
textProperty().isBound()
来查看
text
属性的绑定

一些等效的Java代码是:

Label Label=新标签();
label.textProperty()
.bind(Bindings.createStringBinding(()->“liczba czytelników\nzarejestrowanych”);


${}
语法在
fx:value
上下文中没有特殊意义。这样做的目的是使用class'static
valueOf(String)
方法创建目标类型(
String
)。
valueOf
方法的参数是由
fx:value
属性定义的文本值。这意味着表达式绑定语法和
\n
按原样使用。
\n
实际上是一个反斜杠,后跟一个“n”,与Java中使用的
“\\n”
相同


FXML文件的核心只是一个XML文件。据我所知,除了表达式绑定中的字符串常量之外,FXML格式不提供特殊的多行支持。但是,您可以使用XML转义插入换行符(即)

<fx:define>
    <String fx:id="LABEL_01" fx:value="liczba czytelników&#xD;zarejestrowanych'}"/>
</fx:define>
<Label text="$LABEL_01"/>