JavaFX: Bind StringProperty ze stałym prefiksem łańcucha
Mam pytanie do funkcjonalności powiązań w JavaFX. Chcę powiązać 2 właściwości ciągu. Ale ich wartości nie powinny być równe.
Przykład:
Mam StringProperty z reprezentuje ostatni otwarty projekt w mojej aplikacji.
Wartość jest podobna do „C: tymczasowy projekt.prj”.
Chcę pokazać tę ścieżkę w tytule mojego okna.
To łatwe:stage.titleProperty().bind(lastprojectProperty());
Ale nie chcę pokazywać tylko ścieżki projektu, ale także nazwy aplikacji,
np .: MyApplication 2.2.4 - C: temp myProject.prj.
Można użyć powiązania i dodać ciąg przedrostka? Czy mogę użyć ChangeListerner?
Rozwiązanie z ChangeListener ma problem z wartościami początkowymi ...
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());