2017-12-25 33 views
0

SWT와 JFace에서 최근입니다. 최근에 내 프로젝트에서 JFace 테이블 뷰어를 사용했습니다. 삭제 버튼으로 항목을 삭제해야합니다. 그러나 테이블 뷰어를 삭제 한 후 새로 고치면 작동하지 않습니다. 나는 아래에 보여 reason.My 코드를 알고 싶어JFace 테이블 뷰어 항목 삭제를 새로 고칠 수 없습니다.

btnDeleteConstraint.addSelectionListener(
      new SelectionAdapter() { 
      @Override 
      public void widgetSelected(SelectionEvent e) { 
      ISelection selection = tableViewer.getSelection(); 
      logger.debug("datatype selected"); 
      if (selection != null || selection instanceof 
      IStructuredSelection) { 
      IStructuredSelection sel = (IStructuredSelection) selection; 
      Iterator iterator = sel.iterator(); 
      while(iterator.hasNext()) { 
       Object obj = iterator.next(); 
       tableViewer.remove(obj); 
      } 

      tableViewer.refresh(); 
     } 

    } 
}); 

그리고 난 입력을 설정하고 결국 테이블을 새로 고침) (다른 방법이라는 업데이트를 사용 : 당신이 refresh를 호출 할 때

public void update() 
{ 
    tableViewer.setInput(DataTypeFactory. 
    getInstance().getCastList(wizard.getSourceInfo().getDBType())); 
    tableViewer.refresh(); 
} 

답변

0

테이블이 '콘텐츠 제공 업체'에서 업데이트됩니다. 따라서 삭제할 때 콘텐츠 공급자가 반환하는 데이터를 getElements 메서드로 반환해야합니다.

+0

그래서 수정할 때마다 테이블을 새로 고칠 필요가 없습니다. 맞습니까? – khunnie

+0

아니요 새로 고칠 필요가 없습니다. 그러나 콘텐츠 공급자 데이터를 표시된 테이블과 동기화 된 상태로 유지해야합니다. –