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

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

我有一个远程文件模型,其中包含文件名、文件路径、远程目录的连接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];
}

谢谢,成功了。我必须将字段“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,但我想保存完成的模型。有没有可能这样做,因为我在任何地方都没有得到这样的东西。