2012-10-11 2 views
1

내 주요 dailog에는 JFace TableViewer가 있습니다. 테이블의 마지막 열은 ComboBoxCellEditor입니다. 그들에게는 No, Yes, Both의 옵션이 있습니다. 이것은 모두 설계된대로 작동합니다.SWT - 내 TableViewer에서 EditingSupport 사용

하지만 여기에 내 문제가 있습니다.

  1. 사용자가 값으로 모두를 선택하면.
  2. 나는 다음
  3. 가 모두 다시 추가 예
  4. 에 값을 변경 데이터의 복사본을 만듭니다 배열
  5. 변경 없음
  6. 에 모두의 값에서 현재 행 데이터를 얻을 방법을 실행해야 배열
  7. 에 테이블

표 예를 새로 고침

에서 -

으로3210
1002 | 001 | sss | part | both(user changed from default) 

- 모두가 나머지를 할 수있는 방법을 실행하는 방법을 선택 후

1002 | 001 | sss | part | No 

1002 | 001 | sss | part | Yes 

나는 알아 내려고 노력하고 있어요. 나는 일종의 청취자가되어야한다고 생각하고 있습니다. 제 EditingSupport 코드를보고 나머지 방법을 시작할 방법을 알려주십시오.

답변

1

귀하의 질문을 이해하는 한, 귀하는 귀하의 개체 중 하나를 복제하여 모델에 추가하고 뷰어를 새로 고칩니다.

이 모든 것은 사용자가 콤보 상자에서 "both"을 선택할 때 발생합니다. 이 일이 언제 일어 났는지 이미 알고 있습니다. setValue 방법의 경우 else에 도달하게됩니다. 그럼 당신은 당신이해야 할 일을 할 수 있습니다 : 당신은 단순히 지적 것을 지금은 너무 분명하다

protected void setValue(Object element, Object value) 
{ 
    if((element instanceof AplotDatasetData) && (value instanceof Integer)) { 
     Integer choice = (Integer)value; 

     String option = ((AplotDatasetData)element).getMarkupValue(); 

     if(choice == 0) { 
      option = "No"; 
     }  
     else if(choice == 1) { 
      option = "Yes"; 
     }  
     else { 
      option = "Both"; 

      // create a copy of your element 
      // add it to your model 
      // update the viewer 
     } 

     getViewer().update(element, null); 
    } 

} 
+0

합니다. Baz는 당신의 모든 도움에 대해 대단히 감사합니다. 나는 당신의 제안과 설명에서 꽤 많이 배웠다 – jkteater

+0

@jkteater 환영합니다. 내가 도울 수있어서 항상 기뻐. – Baz

관련 문제