2014-10-09 6 views
2

테이블 뷰어를 사용하여 테이블을 만들었으므로 텍스트 상자에 입력 한 텍스트를 기반으로 필터링해야하므로 테이블을 필터 할 수있는 방법은 무엇입니까? 테이블을 만들려면 다음과 같습니다.입력 된 텍스트를 기반으로 JFace에서 테이블 뷰어를 필터링하는 방법

TableViewerColumn message = new TableViewerColumn(viewer, SWT.NONE); 
     message.getColumn().setWidth(800); 
     message.getColumn().setText("Message"); 
     message.setLabelProvider(new ColumnLabelProvider() 
     { 
      @Override 
      public void update(ViewerCell cell) 
      { 
       Object element = cell.getElement(); 
       if(element instanceof MyObject) 
       { 
        MyObject obj = (MyObject) element; 

        cell.setText(obj.getMessage()); 
       } 
      } 
     }); 
    } 

    private static class MyObject 
    { 
     private String first; 
     private String second; 
     private String message; 

     public MyObject(String first, String second,String message) 
     { 
      this.first = first; 
      this.second = second; 
      this.message = message; 
     } 

     public String getFirst() 
     { 
      return first; 
     } 

     public void setFirst(String first) 
     { 
      this.first = first; 
     } 

     public String getSecond() 
     { 
      return second; 
     } 

     public void setSecond(String message) 
     { 
      this.second = second; 
     } 

     public String getMessage() 
     { 
      return message; 
     } 

     public void setMessage(String message) 
     { 
      this.message = message; 
     } 

이제 테이블을 어떻게 필터링 할 수 있습니까?

viewer.addFilter(new MyFilter()); 

전화 :

class MyFilter extends ViewerFilter 
{ 
    @Override 
    public boolean select(Viewer viewer, Object parentElement, Object element) 
    { 
    MyObject obj = (MyObject)element; 

    // TODO return true to include the object, false to exclude 
    } 
} 

이있는 테이블이 추가 : 나는 필터를 추가 할 ViewerFilter에서 파생 된 클래스를 사용하여 테이블 뷰어에게

답변

2

을 JFace는 새로운 생각으로 저를 도와주세요

viewer.refresh(); 

뷰어가 텍스트가 변경되면 필터링하십시오.

+0

메시지 coloum을 제외한 모든 coloum을 필터링 할 수 있습니다. 코드는 다음과 같습니다 –