JavaFX: Bind StringProperty com prefixo de cadeia constante
Eu tenho uma pergunta para a funcionalidade de ligação no JavaFX. O que eu quero é ligar duas propriedades de string. Mas seus valores não devem ser iguais.
Vamos me fazer um exemplo:
Eu tenho um StringProperty com representa o último projeto aberto no meu aplicativo.
O valor é como "C: \ temp \ myProject.prj".
Eu quero mostrar esse caminho no título da minha janela.
É fácil:stage.titleProperty().bind(lastprojectProperty());
Mas eu não quero mostrar apenas o caminho do projeto, mas também o nome do aplicativo,
Por exemplo: MyApplication 2.2.4 - C: \ temp \ myProject.prj.
É possível usar a ligação e adicionar uma string de prefixo constante? Ou eu uso um ChangeListerner?
A solução com o ChangeListener tem o problema com os valores iniciais ...
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());