提问者:小点点

如何将模型绑定到SWT文本,但文本中只显示一个字段


我有一个远程文件模型,它包含远程目录的文件名、文件路径、连接IP、连接端口等字段。我只想在文本中显示文件路径。我正在使用JFace数据绑定将模型绑定到SWT文本,但我只能将一个字段绑定到它。请帮助我将完整模型绑定到文本并仅显示一个字段。也告诉我是否有可能或者有其他方法。


共1个答案

匿名用户

如果我理解正确,您想在一个SWT文本小部件中显示多个模型字段吗?您可以通过以下方式执行此操作:

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];
}