2010-08-19 21 views
5

Tôi có Bảng SWT mà tôi đang tạo kiểu theo kiểu SWT.CHECK để hiển thị hộp kiểm bên cạnh mỗi hàng. Người dùng của tôi đã yêu cầu một hộp kiểm khác trong hàng tiêu đề của bảng để cho phép họ chọn/bỏ chọn tất cả các hàng bằng một cú nhấp chuột.Làm cách nào tôi có thể đặt hộp kiểm "(de) chọn tất cả" trong tiêu đề Bảng SWT?

Tôi không thể thấy bất kỳ cách rõ ràng nào để thực hiện điều đó và tôi chỉ tìm thấy các ví dụ về Swing/JTable thông qua Google. Có ai biết cách để làm điều này không? Tôi hy vọng nó có thể mà không cần thực hiện lại Bảng hoặc rơi trở lại trên một menu ngữ cảnh tiêu đề.

Trả lời

3

Bạn có thể sử dụng một FormLayout cho phép xếp chồng các đối tượng, sau đó thêm một hộp kiểm trên của bảng như sau:

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); 

Bạn có thể tìm thấy nó hữu ích cho việc sắp xếp một cách chính xác vào hộp kiểm để có được chiều cao của hàng tiêu đề bảng với table.getHeaderHeight().

+0

Xin lỗi vì phản ứng chậm. Tôi đã cố gắng để thử điều này cho các lứa tuổi. Sẽ cho nó một đi và chấp nhận nếu nó làm những gì tôi nghĩ rằng nó sẽ :) Cảm ơn! –

+0

Không sao cả. Thả một bình luận nếu nó không hoạt động như mong đợi. –

6

Chỉ cần tạo hai hình ảnh của hộp kiểm. Đầu tiên mà không có một đánh dấu và thứ hai có một tick.Now thêm hình ảnh đầu tiên vào tiêu đề tableColumn. Sau đó thêm người nghe vào bảngColumn theo cách mà khi bạn nhấp vào nút lần đầu tiên, phương pháp table.selectALL() sẽ được kích hoạt cùng với việc thay đổi hình ảnh tiêu đề tableColumn thành hình ảnh thứ hai. Khi bạn nhấp lại vào nút, hãy gọi phương thức table.deSelectAll() và thay thế tiêu đề tableColumn bằng hình ảnh đầu tiên.

Bạn có thể sử dụng điều kiện này:

Khi hộp kiểm (ảnh) được nhấp, sử dụng một vòng lặp for để kiểm tra xem, bất kỳ hộp kiểm trong bảng sẽ được kiểm tra. nếu có ai được tìm thấy kiểm tra thì phương thức table.deSelectAll() cháy, nếu không thì phương thức table 01.sẽ bị cháy.

Sẽ không có bất kỳ vấn đề nào đối với "hộp kiểm" trong khi đổi kích thước bảng/góa phụ.

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

đầy đủ mô tả mã này :: de) chọn tất cả các hộp kiểm tra”trong một Bảng SWT tiêu đề


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

nhờ ....

+0

đặc biệt cảm ơn ...... Martin McNulty ... có một ngày tốt đẹp –

Các vấn đề liên quan