Ho una domanda sulla funzionalità di bind in JavaFX. Quello che voglio è associare 2 proprietà di stringa. Ma i loro valori non dovrebbero essere uguali.JavaFX: Bind StringProperty con prefisso di stringa costante
Let me di fare un esempio:
Ho uno StringProperty con rappresenta l'ultimo progetto aperto nella mia applicazione.
Il valore è come "C: \ temp \ myProject.prj".
Voglio mostrare questo percorso nel titolo della mia finestra.
E 'facile: stage.titleProperty().bind(lastprojectProperty());
Ma io non voglio mostrare solo il percorso del progetto, ma anche il nome dell'applicazione,
es .: MyApplication 2.2.4 - C: \ temp \ myProject.prj.
È possibile utilizzare la rilegatura e aggiungere una stringa di prefisso costante? O devo usare un ChangeListerner?
La soluzione con il ChangeListener ha il problema con i valori iniziali ...
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());
agonist_ grazie mille! Sei grande! Questo è exactyl quello che volevo !!! Funziona! Molto più facile senza ChangeListener. –
Nessun problema, i binding JavaFX sono davvero potenti, puoi fare probabilmente tutto ciò che vuoi –