2013-01-17 1 views
0

문제 중 하나에 갇혀 있습니다. 내가 전화 번호 필드 010-9999-9999을 가지고 있다고 가정하면,이 숫자는 3 개의 텍스트 필드로 나뉘어져 있어야합니다. 나는이 작업을 시도했지만 3 개의 텍스트 필드 모두에 접두 번호, 즉 010만을 얻습니다. jface 데이터 바인딩을 사용하고 있습니다. 내가 세 필드는 010 즉에만 접두사가 채워이 값을 할 때Jface를 사용하여 텍스트 필드의 전화 번호 탭 이동

IObservableValue ssn1TextTextObserveWidget = SWTObservables.observeText(text_ph11, SWT.Modify); 
IObservableValue ssn2TextTextObserveWidget = SWTObservables.observeText(text_ph2, SWT.Modify); 
IObservableValue ssn2TextTextObserveWidget1 = SWTObservables.observeText(text_ph3, SWT.Modify); 

IObservableValue simpleTableViewerSSN1ObserveDetailValue = BeansObservables.observeDetailValue(simpleTableViewerSelectionObserveSelection_employee, "phoneNo", String.class); 
IObservableValue simpleTableViewerSSN2ObserveDetailValue = BeansObservables.observeDetailValue(simpleTableViewerSelectionObserveSelection_employee, "phoneNo", String.class); 

IObservableValue simpleTableViewerSSN2ObserveDetailValue = BeansObservables.observeDetailValue(simpleTableViewerSelectionObserveSelection_employee, "phoneNo", String.class); 

데이터 바인딩

bindingContext.bindValue(simpleTableViewerSSN1ObserveDetailValue, ssn1TextTextObserveWidget, null, null); 
bindingContext.bindValue(simpleTableViewerSSN2ObserveDetailValue, ssn2TextTextObserveWidget, null, null); 
bindingContext.bindValue(simpleTableViewerSSN2ObserveDetailValue, ssn2TextTextObserveWidget1, null, null); 

:

나는

class A{ 
    String phoneNo; 
} 

JFace는 데이터 바인딩을 모델 생성 -010-010. 이 문제를 해결하려면 저를 도우십시오.

답변

0

전화 번호를 세 가지 위젯으로 나누려면 전화 번호의 다른 부분이 할당 된 세 가지 속성으로 전화 번호를 저장해야 할 수 있습니다.

getter 메소드를 사용하여 문자열 값의 '부분'을 위젯에 바인딩 할 수있는 방법이있을 수 있지만이 영역에 대한 지식이 풍부한 사람이 답을 줄 수 있습니다.

+0

Thx Waqas ... 기다려야합니다. :) – user1925819

+0

테이블 행을 클릭하면 양식 필드가 채워지는 것과 같습니다. 표에서 나는 전화 번호 형식이 010-2222-222 (1 필드)이고 양식 필드에서 3 위젯으로 분할됩니다. – user1925819

0

다음은 사례와 함께 작동하도록 수정할 수있는 샘플 코드입니다. IConverterUpdateValueStrategy과 함께 사용되어 모델이 대상 텍스트 필드로 /부터 가져올 값을 수정합니다.

//GUI class 

    final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setLayout(new GridLayout(3, false)); 

    Label lbl = new Label(shell, SWT.NONE); 
    lbl.setText("Name"); 
    final Text firstName = new Text(shell, SWT.BORDER); 
    final Text lastName = new Text(shell, SWT.BORDER); 
    final Name name = new Name(); 
    SWTObservables.getRealm(display).exec(new Runnable() { 

     @Override 
     public void run() { 

     // TODO Auto-generated method stub 
     Realm realm = SWTObservables.getRealm(display); 
     DataBindingContext cxt = new DataBindingContext(realm); 

     ISWTObservableValue firstNameObservable = SWTObservables.observeText(firstName, new int[] { SWT.Modify }); 
     ISWTObservableValue lastNameObservable = SWTObservables.observeText(lastName, new int[] { SWT.Modify }); 

     final IObservableValue nameObservable = BeansObservables.observeValue(realm, name, "name"); 

     UpdateValueStrategy firstNameTxtToName = new UpdateValueStrategy(); 

     firstNameTxtToName.setConverter(new IConverter() { 

      @Override 
      public Object getToType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object getFromType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object convert(Object fromObject) { 

      String val = fromObject.toString(); 
      Object beanVal = nameObservable.getValue(); 
      if (beanVal != null) { 
       String beanString = beanVal.toString(); 
       int i = beanString.indexOf(','); 
       if (i != -1) { 
       return val + beanString.substring(i); 
       } 
      } 
      return val; 
      } 
     }); 

     UpdateValueStrategy nameToFirstName = new UpdateValueStrategy(); 

     nameToFirstName.setConverter(new IConverter() { 

      @Override 
      public Object getToType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object getFromType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object convert(Object fromObject) { 

      if (fromObject != null) { 
       Object objVal = nameObservable.getValue(); 
       if (objVal != null) { 
       String val = objVal.toString(); 
       int i = val.indexOf(','); 
       if (i != -1) { 
        return val.substring(0, i); 
       } else { 
        return val; 
       } 
       } 
      } 
      return ""; 
      } 
     }); 

     UpdateValueStrategy lastNameTxtToName = new UpdateValueStrategy(); 

     lastNameTxtToName.setConverter(new IConverter() { 

      @Override 
      public Object getToType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object getFromType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object convert(Object fromObject) { 

      String val = fromObject.toString(); 
      Object beanVal = nameObservable.getValue(); 
      if (beanVal != null) { 
       String beanString = beanVal.toString(); 
       int i = beanString.indexOf(','); 
       String fName = beanString; 
       if (i != -1) { 
       fName = beanString.substring(0, i + 1); 
       } else { 
       fName = fName + ","; 
       } 
       val = fName + val; 
      } 
      return val; 
      } 
     }); 

     UpdateValueStrategy nameToLastName = new UpdateValueStrategy(); 

     nameToLastName.setConverter(new IConverter() { 

      @Override 
      public Object getToType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object getFromType() { 

      // TODO Auto-generated method stub 
      return String.class; 
      } 

      @Override 
      public Object convert(Object fromObject) { 

      if (fromObject != null) { 
       String val = fromObject.toString(); 
       int i = val.indexOf(','); 
       if (i != -1) { 
       return val.substring(i + 1); 
       } 
      } 
      return ""; 
      } 
     }); 
     cxt.bindValue(firstNameObservable, nameObservable, firstNameTxtToName, nameToFirstName); 

     cxt.bindValue(lastNameObservable, nameObservable, lastNameTxtToName, nameToLastName); 
     } 
    }); 

    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) { 
     display.sleep(); 
     } 
    } 
    display.dispose(); 




//POJO 


public class Name { 

    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this); 

    public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { 

    changeSupport.addPropertyChangeListener(propertyName, listener); 
    } 

    public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { 

    changeSupport.removePropertyChangeListener(propertyName, listener); 
    } 

    public void addPropertyChangeListener(PropertyChangeListener listener) { 

    changeSupport.addPropertyChangeListener(listener); 
    } 

    public void removePropertyChangeListener(PropertyChangeListener listener) { 

    changeSupport.removePropertyChangeListener(listener); 
    } 

    public void firePropertyChangeEvent(PropertyChangeEvent evt) { 

    changeSupport.firePropertyChange(evt); 
    } 

    String name; 


    /** 
    * @return the name 
    */ 
    public String getName() { 

     return name; 
    } 


    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 

     this.name = name; 

     System.out.println(name); 
    } 

    } 
+0

감사합니다 Sambi ... 나는 이것을 필요로했다 ... :) – user1925819

+0

그것이/유용하다면 투표하십시오. 감사! –

관련 문제