2014-07-10 1 views
3

파일 이름, 파일 경로 및 연결 IP, 원격 연결 용 연결 포트 등의 필드가있는 원격 파일 모델이 있습니다. 텍스트의 파일 경로 만 표시합니다. SWT Text에 모델을 바인딩하기 위해 JFace Data 바인딩을 사용하고 있지만, 하나의 필드 만 바인딩 할 수 있습니다. 전체 모델을 텍스트에 바인딩하고 하나의 필드 만 표시하도록 도와주세요. 가능하거나 불가능하거나 다른 방법이 있으면 알려주세요.모델을 SWT 텍스트에 바인딩하는 방법 텍스트에 단 하나의 필드 만 표시하는 방법

답변

2

올바르게 이해한다면 하나의 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를 찾으십시오. 따라서 실제로 필드 자체가 필요하지는 않습니다.

이 게터에서 당신이 필요한 정보를 제공 할 수 있으며, 심지어 세터에 특별한 형식을 구문 분석하고이 같은 관련 분야에 그 무언가를 지정할 수 있습니다 :

public void setFileSummary(String summary) { 
    // todo: implement in a smart way;) 
    String[] parts = summary.split(" : "); 
    name = parts[0]; 
    filePath = parts[1]; 
    ip = parts[2]; 
} 
+0

감사합니다, 그것은했다. Jaxb를 사용하여 XML의 내용을 쓰고 있었기 때문에 @XmlTransient 필드를 "요약"으로 만들어야했습니다. – saurabh

+0

자, 이제이 방법이 문제를 일으키고 있습니다. 이 클래스를 확장하면서 Jaxb를 사용하여 XML에 작성하므로이 추가 요약 필드가 제공됩니다. Xml Transient를 사용하지 않기 위해 쓰는 동안 수퍼 클래스 필드 만 써주세요. 제발 저를 도와주세요. – saurabh

+0

다음은 내가 사용하는 클래스입니다. class FileModel { private String name; 전용 문자열 filePath; // getters 및 setter } 클래스 RemoteFileModel extends FileModel { 공용 문자열 IP; // getters and setters } 및 FileModel을 확장하는 다른 여러 클래스. 모델을 텍스트 위젯에 바인딩하는 방법이나 다른 방법을 다루는 방법을 도와주세요. – saurabh