2014-10-09 5 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; 
     } 

так что как мы можем отфильтровать таблицу. Пожалуйста, помогите мне, как я новичок в JFace просмотра для таблиц

ответ

2

Используйте класс, производный от ViewerFilter добавить фильтр:

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 
    } 
} 

Добавьте это к столу:

viewer.addFilter(new MyFilter()); 

Зов

viewer.refresh(); 

, чтобы зритель мог повторно запустить фильтр при изменении текста.

+0

Я могу фильтровать каждый номер, за исключением сообщения coloum. Код соответствует следующему –