swt table简单处理


package src;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class hjk extends Shell {

private Table table;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
Display display = Display.getDefault();
hjk shell = new hjk(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Create the shell
* @param display
* @param style
*/
public hjk(Display display, int style) {
super(display, style);
createContents();
}

/**
* Create contents of the window
*/
protected void createContents() {
final Button button = new Button(this, SWT.NONE);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent selectionevent) {
}
});
button.setText("button");
button.setBounds(369, 278, 48, 22);
setText("SWT Application");
setSize(500, 375);

table = new Table(this, SWT.None);
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setBounds(62, 40, 396, 232);
  for (int i = 0; i < 3; i++) {
      TableColumn column = new TableColumn(table, SWT.CENTER);
      column.setText("Column " + (i + 1));
      column.pack();
    }
for(int i=0;i<10;i++)
{
final TableItem tableItem=new TableItem(table,0);
tableItem.setText(new String[]{"","dddddddddddddddddddddddddddddddd"});
tableItem.setData("dfgh"+i);
TableEditor editor = null;
        
         //添加check box
         editor = new TableEditor (table);
     final Button check = new Button(table, SWT.CHECK);
     check.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
     check.setData(i);
         //check.setSelection(true);
     check.setFocus();
     check.isFocusControl();
         //check.setSelection(false);
     check.pack();
     editor.minimumWidth = check.getSize ().x;
     editor.horizontalAlignment = SWT.CENTER;
     editor.setEditor(check, tableItem, 0);
     check.addSelectionListener(new SelectionAdapter() {

         public void widgetSelected(SelectionEvent e) {

              // getSelection()方法用于获得checkbox的选择状态

String status1 = check.getSelection() ? "selected"

                        : "not selected";
System.out.println(table.getSelectionCount());
            

              System.out.println("checkbox1: " + status1);

             //table.//
              System.out.println("check.getData()="+check.getData());
              System.out.println("check.getData()="+table.getItem((Integer)check.getData()).getData());
              System.out.println("check.getData()="+table.getItem((Integer)check.getData()).getText(1));
          }

     });

     /*gao*/
}

//
}

@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}

}

......................................................
import org.eclipse.swt.SWT;

import org.eclipse.swt.custom.TableEditor;

import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;

import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;


public class Xm {

private Table table;
protected Shell shell;

/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
try {
Xm window = new Xm();
window.createContents();
} catch (Exception e) {
e.printStackTrace();
}
}



/**
* Create contents of the window
*/
protected void createContents() {



    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Text Table Editor");

    shell.setLayout(new FillLayout());

    final Table table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    for (int i = 0; i < 3; i++) {
      TableColumn column = new TableColumn(table, SWT.CENTER);
      column.setText("Column " + (i + 1));
      column.pack();
    }
   
   
    for (int i = 0; i < 30; i++) {
      TableItem item1 = new TableItem(table,0);
      item1.setText(new String[]{"Tim"+i,"Hatton"+(i+100),"Kentucky"});

              TableEditor editor = null;
             
                  //添加check box
                  editor = new TableEditor (table);
              final Button check = new Button(table, SWT.CHECK);
              check.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
             
                  //check.setSelection(true);
              check.setFocus();
              check.isFocusControl();
                  //check.setSelection(false);
              check.pack();
              editor.minimumWidth = check.getSize ().x;
              editor.horizontalAlignment = SWT.CENTER;
              editor.setEditor(check, item1, 1);
              check.addSelectionListener(new SelectionAdapter() {

                  public void widgetSelected(SelectionEvent e) {

                       // getSelection()方法用于获得checkbox的选择状态

    String status1 = check.getSelection() ? "selected"

                                 : "not selected";

                     

                       System.out.println("checkbox1: " + status1);

                      //table.//
                       System.out.println("table.getItem(4).getText(0)="+table.getItem(3).getText(1));

                   }

              });
    }
   
    table.addListener(SWT.MeasureItem, new Listener() {    //向表格增加一个SWT.MeasureItem监听器,每当需要单元内容的大小的时候就会被调用。
        public void handleEvent(Event event) {
           event.width = table.getGridLineWidth();    //设置宽度
            event.height = (int) Math.floor(event.gc.getFontMetrics().getHeight() * 1.5);    //设置高度为字体高度的1.5倍
        }});
           //   item1.addListener(SWT.SELECTED, new Listener(){

           //   public void handleEvent(Event event) {
           //   System.out.println(".......");
           //   TableItem[] itemList =table.getItems();
           //    int listHaveChouse = table.getSelectionIndex();
              /*
              你可以通过这个下标来取得选中的行的数据了.例如:取得所选行的第一个列属性
              */
            //   String firstInfo = itemList[0].getText(0);
            //   System.out.println(firstInfo);
            //   }         
            //   });

             // item.addDisposeListener(new org.eclipse.swt.events.DisposeListener(){
             //     public void widgetDisposed(org.eclipse.swt.events.DisposeEvent e) {
                      //editor.dispose();当table刷新后,旧的控件清除掉。否则item remove后控件还会在原位
            //          tax.dispose();
            //          check.dispose();                                               
            //      }
           //   });
    System.out.println("table.getItem(4).getText(0)="+table.getItems()[5].getText(0));
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
//



}

你可能感兴趣的:(eclipse)