3

リモート ディレクトリのファイル名、ファイル パス、接続 IP、接続ポートなどのフィールドを持つリモート ファイル モデルがあります。ファイル パスのみをテキストで表示したいと考えています。モデルを SWT テキストにバインドするために JFace データ バインディングを使用していますが、1 つのフィールドしかバインドできません。完全なモデルをテキストにバインドし、1 つのフィールドのみを表示するのを手伝ってください。また、可能かどうか、または他の方法があるかどうかも教えてください。

4

1 に答える 1

2

私が正しく理解しているなら、1 つの SWT Text ウィジェットに複数のモデル フィールドを表示したいですか? 次の方法でそれを行うことができます。

class FileModel {

    private String name;
    private String filePath;
    private String ip;
    // other fields, getters and setters

    public String getFileSummary() {
        return name + " : " + filePath + " : " + ip;
    }

    public void setFileSummary(String summary) {
        // ignore
    }

}

次に、次のようにバインドできます。

FileModel model;
new DataBindingContext().bindValue(SWTObservables.observeText(text, SWT.Modify),
            BeansObservables.observeValue(model, "fileSummary"), new UpdateValueStrategy(), new UpdateValueStrategy());

モデルでバインドする「fileSummary」フィールド名を指定している間、JFace はそのフィールドの getter と setter を探すので、実際にはフィールド自体は必要ありません。

getter では必要な情報を提供でき、setter でいくつかの特別な形式を解析して、次のように関連するフィールドに割り当てることもできます。

public void setFileSummary(String summary) {
    // todo: implement in a smart way;)
    String[] parts = summary.split(" : ");
    name = parts[0];
    filePath = parts[1];
    ip = parts[2];
}
于 2014-07-10T13:25:33.533 に答える