Mam pytanie do funkcji wiązania w JavaFX. To, czego chcę, to powiązanie 2 właściwości łańcuchów. Ale ich wartości nie powinny być równe.JavaFX: Bind StringProperty ze stałym ciągiem prefiksowym
Zróbmy mi przykład:
Mam StringProperty z reprezentuje ostatni otwarty projekt w mojej aplikacji.
Wartość jest jak "C: \ temp \ myProject.prj".
Chcę pokazać tę ścieżkę w tytule mojego okna.
To proste: stage.titleProperty().bind(lastprojectProperty());
Ale nie chcę, aby pokazać tylko ścieżkę projektu, ale także nazwę aplikacji,
np .: MyApplication 2.2.4 - C: \ Temp \ myProject.prj.
Możliwe jest użycie wiązania i dodanie stałego ciągu prefiksu? Czy mogę użyć ChangeListerner?
Rozwiązanie z ChangeListener ma problemu z początkowych wartości ...
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());
agonista_ dziękuję bardzo! Jesteś świetny! To jest exactyl co chciałem !!! To działa! Znacznie łatwiej bez ChangeListener. –
Bez problemów, powiązania JavaFX są naprawdę potężne, możesz zrobić prawdopodobnie wszystko czego potrzebujesz –