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