Java 如何将模型绑定到SWT文本,但只显示文本中的一个字段
我有一个远程文件模型,其中包含文件名、文件路径、远程目录的连接IP、连接端口等字段。我只想在文本中显示文件路径。 我使用JFace数据绑定将模型绑定到SWT文本,但我只能将1个字段绑定到它。 请帮助我将完整的模型绑定到文本并仅显示一个字段。Java 如何将模型绑定到SWT文本,但只显示文本中的一个字段,java,data-binding,swt,jface,eclipse-databinding,Java,Data Binding,Swt,Jface,Eclipse Databinding,我有一个远程文件模型,其中包含文件名、文件路径、远程目录的连接IP、连接端口等字段。我只想在文本中显示文件路径。 我使用JFace数据绑定将模型绑定到SWT文本,但我只能将1个字段绑定到它。 请帮助我将完整的模型绑定到文本并仅显示一个字段。 还请告诉我是否可能,或者是否有其他方法。如果我理解正确,您希望在一个SWT文本小部件中显示多个模型字段吗?您可以通过以下方式执行此操作: class FileModel { private String name; private Stri
还请告诉我是否可能,或者是否有其他方法。如果我理解正确,您希望在一个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];
}
谢谢,成功了。我必须将字段“summary”设置为@xmltransive,因为我还使用Jaxb在Xml中编写模型的内容。当我扩展这个类并使用Jaxb将其写入Xml时,这个额外的摘要字段就出现了。为了避免这种情况,我使用了Xml瞬态,但在编写Xml时,只将超类字段写入其中。请帮助我处理这个问题。下面是我正在使用的类-class FileModel{private String name;private String filePath;//getters and setters}class RemoteFileModel扩展FileModel{public String Ip;//getters and setters}和其他几个扩展FileModel的类。请帮助我如何处理这个问题,或者以任何其他方式将模型绑定到文本小部件。实际上,我正在将其写入Xml,因此我必须将摘要字段设置为临时字段,因为我不想在Xml中显示该字段。而且我也不知道怎么做,只有超类的内容被持久化了,而子类的内容不是。IObservableValue target=WidgetProperties.text(SWT.Modify)。observe(filePathText);IObservableValue model=PojoProperties.value(RemoteFileModel.class,“summary”).observe((RemoteFileModel)inputFileDetails)//如果是远程文件dbc.bindValue(目标、模型);我像上面一样进行绑定,所以我有一个filePathText,我想在其中显示filePath,但我想保存完成的模型。有没有可能这样做,因为我在任何地方都没有得到这样的东西。