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
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'staticvalueOf(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
zarejestrowanych'}"/>
</fx:define>
<Label text="$LABEL_01"/>