2010-08-19 3 views
5

У меня есть таблица SWT, которую я создаю с помощью стиля SWT.CHECK, чтобы отображать флажок рядом с каждой строкой. Мои пользователи запросили еще один флажок в строке заголовка таблицы, чтобы позволить им выбирать/отменить выбор всех строк одним щелчком мыши.Как установить флажок «(de) выбрать все» в заголовке таблицы SWT?

Я не вижу никакого очевидного способа сделать это, и я нашел примеры Swing/JTable через Google. Кто-нибудь знает как это сделать? Я надеюсь, что это возможно без повторной реализации таблицы или возврата в контекстное меню заголовка.

ответ

3

Вы можете использовать FormLayout, чтобы позволить укладку объектов, а затем добавить флажок на верхних таблицы следующим образом:

FormData fd = new FormData(); 
fd.left = new FormAttachment(table, 5, SWT.LEFT); 
fd.top = new FormAttachment(table, 5, SWT.TOP); 
checkbox.setLayoutData(fd); 
checkbox.moveAbove(table); 

Вы можете найти его полезным для правильного выравнивания флажка, чтобы получить высоту строка заголовка таблицы с table.getHeaderHeight().

+0

Извините за медленный ответ. Я имею в виду попробовать это целую вечность. Будет ли это идти и принять, если он делает то, что я думаю, что это будет :) Спасибо! –

+0

Нет проблем. Отбросьте комментарий, если он не работает так, как ожидалось. –

6

Просто создайте два изображения флажка. Первый без галочки и второй с тиком. Теперь добавьте первое изображение в заголовок tableColumn. После этого добавьте listener в tableColumn таким образом, чтобы при первом нажатии кнопки, метод table.selectALL() должен быть запущен вместе с изменением заголовка заголовка tableColumn на второй. Когда вы снова нажимаете кнопку, вызовите метод table.deSelectAll() и замените заголовок tableColumn первым изображением.

Вы можете использовать это условие:

Когда флажок (изображение) нажата, используйте цикл для проверки любого из флажков в таблице проверяется ли, . если кто-либо найден проверен, то fire table.deSelectAll() метод, иначе пожар таблица.selectAll() способ.

Не будет проблем для «флажка» при изменении размера таблицы/вдовы.

tableColumn0.addListener(SWT.Selection, new Listener() { 
    @Override 
    public void handleEvent(Event event) { 
     // TODO Auto-generated method stub 
     boolean checkBoxFlag = false; 
     for (int i = 0; i < table.getItemCount(); i++) { 
      if (table.getItems()[i].getChecked()) { 
       checkBoxFlag = true; 
      } 
     } 

     if (checkBoxFlag) { 
      for (int m = 0; m < table.getItemCount(); m++) { 
       table.getItems()[m].setChecked(false); 
       tableColumn0.setImage(new Image(Display.getCurrent(), 
         "images/chkBox.PNG")); 

       table.deselectAll(); 

      } 
     } else { 
      for (int m = 0; m < table.getItemCount(); m++) { 
       table.getItems()[m].setChecked(true); 
       tableColumn0.setImage(new Image(Display.getCurrent(), 
         "images/chkBox2.PNG")); 

       table.selectAll(); 
      } 
     } 

    } 
}); 
0

Полностью описать этот код :: де) выбрать все»флажок в SWT таблице заголовка


public class TaskView extends ViewPart { 

    public static TableItem std_item; 
    public static List<Student> std=new ArrayList<Student>(); 
    public static Table table; 
    private TableColumn col_name_add; 
    private TableColumn col_image_add; 
    static int countcheck; 
    static int staticno=1; 
    static int check=0,uncheck=0; 

    public TaskView() { 
     setTitleImage(ResourceManager.getPluginImage("RCP_Demo", "icons/Tasksview.png")); 
    } 

    @Override 
    public void createPartControl(Composite parent) { 
     parent.setLayout(null); 

     ////////// Table Create 
     table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION|SWT.CHECK|SWT.CENTER); 
     ////SWT.CHECK: Display first column check box 

     table.addSelectionListener(new SelectionAdapter() { 
      @Override 
      public void widgetSelected(SelectionEvent e) { 

       TableItem item = table.getItem(table.getSelectionIndex()); 
       for(int col=1;col<table.getColumnCount();col++) 
       { 
        //Table_Column Checked or Not 
        if(item.getChecked()) 
         item.setChecked(false); 
        else 
         item.setChecked(true); 

        /////////First column value get 
        if(col==1) 
        { 
         System.out.println(item.getText(col)); 
        } 
        TableItem[] itemCheck = table.getItems(); 
        for(int i=0;i<table.getItemCount();i++) 
        { 
         if(itemCheck[i].getChecked()) 
          ++check; 
         else 
          ++uncheck; 
        } 
        if(check==table.getItemCount()) 
         //Change column image:Checkbox checked 
         col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/check.png")); 
        else 
         //Change column image:Checkbox Unchecked 
         col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png")); 

        //System.out.println("Check:"+check+"uncheck"+uncheck); 
        check=0; 
        uncheck=0; 
       } 
      } 
     }); 
     table.setBounds(10, 10, 343, 297); 
     table.setHeaderVisible(true); 
     table.setLinesVisible(true); 

     ////// SWT Table header Column 
     col_image_add = new TableColumn(table, SWT.LEFT); 
     col_image_add.addSelectionListener(new SelectionAdapter() { 
      @Override 
      public void widgetSelected(SelectionEvent e) { 
       //All Row selected or Not 
       //column Icon change checked(selected) or not 

       System.out.println("Total Row Count:"+table.getItemCount()); 
       TableItem item[] = table.getItems(); 
       if(staticno==1) 
       { 
        for(int i=0;i<table.getItemCount();i++) 
        { 
         item[i].setChecked(true); 
         col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/check.png")); 
        } 
        staticno=0; 
       }else 
       { 
        for(int i=0;i<table.getItemCount();i++) 
        { 
         item[i].setChecked(false); 
         col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png")); 
        } 
        staticno=1; 
       } 
      } 
     } 
     }); 
     col_image_add.setMoveable(true); 
     col_image_add.setToolTipText("Click"); 
     col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png")); 
     col_image_add.setWidth(36); 

     //Dynamic column Name add 

     String[] Col_names={"Stud_id","Stud_Name","Stud_Gender"}; 
     for(int i=0;i<Col_names.length;i++) 
     { 
      col_name_add = new TableColumn(table,SWT.CENTER); 
      col_name_add.setWidth(100); 
      col_name_add.setText(Col_names[i]); 
     } 
    } 
    public TableViewer getViewer() { 
      return null; 
    } 
} 

спасибо ....

+0

особо спасибо ...... Мартин МакНалити ... хорошо провести день –

Смежные вопросы