2013-06-25 19 views
8

JavaFX'deki bağlama işlevine bir sorum var. Benim istediğim 2 dizgi özelliklerini bağlamak. Fakat değerleri eşit olmamalıdır.JavaFX: Sabit String Önekine sahip StringProperty Bağla

en Bana bir örnek yapalım: my uygulamada son açılan projeyi temsil ile

Bir StringProperty var.
Değer "C: \ temp \ myProject.prj" gibidir.
Bu yolu penceremin başlığında göstermek istiyorum. stage.titleProperty().bind(lastprojectProperty());
Ama sadece proje yolunu değil, aynı zamanda uygulamanın adını,
ör .: MyApplication 2.2.4 göstermek istemiyorum - C:
Çok kolay \ temp \ myProject.prj.

Ciltleme ve sabit bir önek dizesi eklemek mümkün mü? Ya da bir ChangeListerner kullanıyorum?

ChangeListener ile çözüm başlangıç ​​değerleriyle sorunu var

...

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()); 

cevap

18

Bunu yaparsanız o mülk öneki ile bağlanan edilecektir

Eğer

istediğiniz
StringProperty prop = new SimpleStringProperty(); 
StringProperty other = new SimpleStringProperty(); 

prop.bind(Bindings.concat("your prefix").concat(other)); 

gibi bir şey
+0

agonist_ çok teşekkür ederim! Sen müthişsin! Bu tam istediğim şeydir! İşe yarıyor! ChangeListener olmadan çok daha kolay. –

+0

Sorun yok, JavaFX bağlantıları gerçekten güçlü, muhtemelen istediğiniz her şeyi yapabilirsiniz –