14

JavaFX のバインド機能について質問があります。私が欲しいのは、2 つの文字列プロパティをバインドすることです。しかし、それらの値は同じであってはなりません。

例を挙げましょう:

アプリケーションで最後に開いたプロジェクトを表す StringProperty があります。
値は「C:\temp\myProject.prj」のようなものです。
ウィンドウのタイトルにこのパスを表示したいと思います。
簡単です。stage.titleProperty().bind(lastprojectProperty());
しかし、プロジェクト パスだけでなくアプリケーション名も表示したくありません。
例: MyApplication 2.2.4 - C:\temp\myProject.prj。

バインディングを使用して定数プレフィックス文字列を追加することは可能ですか? または、ChangeListerner を使用していますか?

ChangeListener を使用したソリューションには、初期値に問題があります...

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

1 に答える 1

24

そんなことしたら

StringProperty prop = new SimpleStringProperty();
StringProperty other = new SimpleStringProperty();

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

プロパティは、必要なプレフィックスでバインドされます

于 2013-06-25T09:14:42.807 に答える