Хочу отметить, что этот фрагмент кода работает:
<Label text="${'liczba czytelników\nzarejestrowanych'}"/>
Возможно, это не так, как вы думаете.
Синтаксис ${}
является привязкой выражения . Это связывает целевое свойство (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
) с использованием метода класса static valueOf(String)
. Аргумент для метода valueOf
является литеральным значением, определенным атрибутом fx:value
. Это означает, что синтаксис привязки выражения и \n
используются как есть. \n
является буквально обратной косой чертой, за которой следует «n», так же как и использование "\\n"
в Java.
Файл FXML по своей сути является просто файлом XML. Насколько я могу судить, формат FXML не обеспечивает специальной многострочной поддержки за пределами строковых констант в привязке выражений. Однако вы можете использовать экранирование XML для вставки символов новой строки (т. Е. ваше решение ).