У меня вопрос к функциональности привязки в JavaFX. Я хочу связать 2 строковых свойства. Но их значения не должны быть равны.
Сделаем мне пример:
У меня есть StringProperty, представляющий последний открытый проект в моем приложении.
Значение похоже на "C:\temp\myProject.prj".
Я хочу показать этот путь в заголовке моего окна.
> Это просто: stage.titleProperty().bind(lastprojectProperty());
Но я хочу показывать не только путь к проекту, но и имя приложения,
например: MyApplication 2.2.4 - C:\temp\myProject.prj.
Можно ли использовать привязку и добавить постоянную строку префикса? Или мне нужно использовать ChangeListerner?
Решение с ChangeListener имеет проблему с начальными значениями...
final StringProperty path = new SimpleStringProperty("untitled");
final StringProperty title = new SimpleStringProperty("App 2.0.0");
path.addListener(new ChangeListener<String>()
{
@Override
public void changed(ObservableValue<? extends String> ov, String t, String newValue)
{
title.setValue("App 2.0.0 - " + newValue);
}
});
// My title shows "App 2.0.0" since there is now change event throws until now...
// Of course I could call path.setValue("untitled");
// And above path = new SimpleStringProperty("");
System.out.println(title.getValue());
// Now the title is correct: "App 2.0.0 - C:\temp\myProject.prj"
path.setValue("C:\\temp\\myProject.prj");
System.out.println(title.getValue());
prop.bind(Bindings.concat("your prefix", other));
19.05.2021