2014-03-12 2 views
0

오전 초급 (테이블의 첫 번째 열은 각 행의 체크 박스를 가지고), 사람이 도와주세요, 내 문제는 : 내가 10 열이있는 테이블을 가지고 , 내가 확인란을 선택하면 첫 번째 열이 확인란을 가지고 있으며, 컬럼의 나머지 부분은 데이터베이스에서 가득, 은 내가 아래에있는 내 테이블 코드를 붙여 넣기하고는 SWT에

, perticular 행이 선택 될 수 있음을 원하는

public static void main(String arg[]) 
    { 
     // shell and display declared here 

      mainTable = new TableViewer(content, SWT.H_SCROLL| SWT.V_SCROLL | SWT.BORDER |SWT.DM_FILL_BACKGROUND|SWT.FULL_SELECTION); 

      mainTable .getTable().setHeaderVisible(true); 
      mainTable .getTable().setLinesVisible(true); 
      mainTable .setContentProvider(new ArrayContentProvider());  

      // COLUM FOR PLACING THE CHECK BOXES 
      TableColumn columncOL=new TableColumn(mainTable .getTable(),SWT.NONE); 
      columncOL.setText(""); 
      columncOL.setWidth(40); 

      TableViewerColumn columnaC=new TableViewerColumn(mainTable ,columncOL); 
      columnaC.setLabelProvider(new ColumnLabelProvider(){ 

      Map<Object, Button> buttons = new HashMap<Object, Button>(); 
      @Override 
       public void update(ViewerCell cell) { 

        TableItem item = (TableItem) cell.getItem(); 
          Button button; 
          if(buttons.containsKey(cell.getElement())) 
          { 
           button = buttons.get(cell.getElement()); 
          } 
          else 
          { 
           button = new Button((Composite) cell.getViewerRow().getControl(),SWT.CHECK); 

           String s = "Item 1"; 

           button.setData(s, "Some other info or object here"); 
           s = "Item 2"; 

           button.setData(s, "This is item two"); 
           //buttons.put(cell.getElement(), button); 
          } 
          TableEditor editor = new TableEditor(item.getParent()); 
          editor.grabHorizontal = true; 
          editor.grabVertical = true; 
          editor.setEditor(button , item, cell.getColumnIndex()); 
          editor.layout(); 
         } 

        }); 

        // CREATING 1st COLUMNS 
      TableColumn column1Head=new TableColumn(mainTable.getTable(),SWT.NONE); 
        column1Head.setText("col1"); 
        column1Head.setWidth(200); 
        // setting column input 
      TableViewerColumn column1=new TableViewerColumn(mainTable,column1Head); 
        column1.setLabelProvider(new ColumnLabelProvider() 
        { 
         public String getText(Object Element) 
         { 
          Student ap=(Student)Element; 
          return ap.col1(); 
         } 
        }); 

    } 

like this remaing 8 columns만드는 중입니다.perticluar 확인란을 선택했을 때 전체 행을 선택하고 싶습니다. 하나 pleeeease 확인란이 테이블 보여주기 위해 가능한 한 빨리 ....

+0

당신이'CheckboxTableViewer'을 사용하지 않는 이유가 .... 감사합니다 당신을 위해 유용? –

+0

greg, 실제로 나는 CheckboxTableViewer에 대해 모른다. 어떻게 사용할 수 있습니까? Tableviewer 대신 사용할 수 있습니까? 또는? 작은 예제를 줄 수 있습니다 .... – Msn

답변

2

사용 CheckboxTableViewer으로 도와 : 체크 박스가 체크되어 때 사용해야합니다 라인을 선택하려면

mainTable = CheckboxTableViewer.newCheckList(content, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); 

addCheckStateListener가 확인 행을 선택, 무엇인가 :

mainTable.addCheckStateListener(new ICheckStateListener() 
{ 
    @Override 
    public void checkStateChanged(CheckStateChangedEvent event) 
    { 
    if (event.getChecked()) 
     mainTable.setSelection(new StructuredSelection(event.getObject())); 
    } 
}); 
+0

CheckboxTableViewer mainTable = new CheckboxTableViewer (content, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); 이 코드는 "The Constructor CehckboxTableViewer (Composite, int)가 더 이상 사용되지 않습니다"라는 경고를 내 보냅니다. 그리고 checkboxTableViewer의 크로스 바 .... 내가 뭘해야하나요? – Msn

+0

죄송합니다. 저는 CheckboxTableViewer.newCheckList가 뷰어를 구성하는 승인 된 방법이라는 것을 잊었습니다. 답변이 업데이트되었습니다. –

+0

감사합니다 greg ... 고마워요 .... 작동합니다 :) – Msn

1

쉬운 방법 : 테이블의 첫 번째 열은 각 행에 체크 박스를 가지고 선택할 수 있습니다 여부


CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.FULL_SELECTION); 
Table table = tableViewer.getTable(); 
table.addListener(SWT.Selection, new Listener() 
    { 
     @Override 
     public void handleEvent(Event e) { 
      Table table = (Table) e.widget; 
       TableItem item = table.getItem(table.getSelectionIndex()); 
       for (int col = 0; col < table.getColumnCount(); col++) 
       { 
        //Table_Column Checked or Not 
        if(item.getChecked()) 
         //return true 
         //all ready checked(true) to change unchecked(false) 
         item.setChecked(false); 
        else 
         //unchecked(false) to checked(true) each row 
         item.setChecked(true); 
       } 
     }   
    }    

+0

감사합니다 .. @ bharat –