swt table空间应用实例

来源:互联网 发布:java https请求 编辑:程序博客网 时间:2024/04/27 15:57

 import java.text.Collator;
import java.util.Locale;


import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;

public class App_window {

 protected Shell shell;
 private Table table;
 private TableEditor editor = null;

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

 /**
  * Open the window.
  */
 public void open() {
  Display display = Display.getDefault();
  createContents();
  shell.open();
  shell.layout();
  while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) {
    display.sleep();
   }
  }
 }

 /**
  * Create contents of the window.
  */
 protected void createContents() {
  shell = new Shell();
  shell.setSize(478, 300);
  shell.setText("SWT Application");

  table = new Table(shell, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION
    | SWT.HIDE_SELECTION | SWT.VIRTUAL);
  table.addControlListener(new ControlAdapter() {
   @Override
   public void controlResized(ControlEvent e) {
   }
  });
  table.setBounds(10, 10, 442, 214);
  table.setHeaderVisible(true);
  table.setLinesVisible(true);

  editor = new TableEditor(table);
  editor.horizontalAlignment = SWT.LEFT;
  editor.grabHorizontal = true;
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  TableColumn col1 = new TableColumn(table, SWT.LEFT);
  col1.setText("姓名");
  col1.setWidth(100);
  TableColumn col2 = new TableColumn(table, SWT.LEFT);
  col2.setText("年龄");
  col2.setWidth(100);
  TableColumn col3 = new TableColumn(table, SWT.LEFT);
  col3.setText("性别");
  col3.setWidth(100);
  TableColumn col4 = new TableColumn(table, SWT.LEFT);
  col4.setText("地址");
  col4.setWidth(100);
  TableColumn col5 = new TableColumn(table, SWT.LEFT);
  col5.setText("电话");
  col5.setWidth(100);
  
  
  
  /**
   * 添加表格数据
   */
  new TableItem(table, SWT.LEFT).setText(new String[] { "张三", "22", "男",
    "重庆市", "13022332356" });
  new TableItem(table, SWT.LEFT).setText(new String[] { "小桥", "22", "女",
    "上海市", "13029872222" });
  new TableItem(table, SWT.LEFT).setText(new String[] { "小可", "22", "男",
    "北京市", "13006800123" });
  new TableItem(table, SWT.LEFT).setText(new String[] { "王五", "31", "男",
    "武汉市", "13098982201" });
  new TableItem(table, SWT.LEFT).setText(new String[] { "天启", "29", "男",
    "南宁市", "13024374001" });
  new TableItem(table, SWT.LEFT).setText(new String[] { "高乐", "25", "女",
    "天津市", "13088888888" });
  
  
  
  // 删除菜单
  Menu menu1 = new Menu(shell, SWT.POP_UP);
  table.setMenu(menu1);
  MenuItem menuitem1 = new MenuItem(menu1, SWT.PUSH);
  menuitem1.setText("删除");
  
  Button btnNewButton = new Button(shell, SWT.NONE);
  btnNewButton.setBounds(372, 230, 80, 27);
  btnNewButton.setText("New Button");
  
  menuitem1.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event event) {
    MessageBox mbox = new MessageBox(shell, SWT.DIALOG_TRIM
      | SWT.ICON_INFORMATION);
    mbox.setText("删除成功");
    mbox.setMessage("删除了" + table.getSelectionCount() + "条记录");
    table.remove(table.getSelectionIndices());
    mbox.open();
   }
  });
  // 修改table
  {
   table.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseDoubleClick(MouseEvent e) {
     Control c = editor.getEditor();
     if (c != null) {
      c.dispose();
     }
     // 得到选中的行
     Point point = new Point(e.x, e.y);
     // MessageDialog.openInformation(shell, null,
     // point.x+","+point.y);
     final TableItem tableitem = table.getItem(point);
     // 得到选中的列
     int column = -1;
     for (int i = 0; i < table.getColumnCount(); i++) {
      Rectangle rec = tableitem.getBounds(i);
      if (rec.contains(point))
       column = i;
     }
     final int col1 = column;

     // 修改年龄,进行微调
     if (col1 == 1) {
      final Spinner spiner = new Spinner(table, SWT.NONE);
      spiner.setMaximum(120);
      spiner.setMinimum(1);
      spiner.setSelection(new Integer(tableitem.getText(1)));
      editor.setEditor(spiner, tableitem, col1);
      spiner.addModifyListener(new ModifyListener() {

       @Override
       public void modifyText(ModifyEvent e) {
        tableitem.setText(col1, String.valueOf(spiner
          .getSelection()));
       }
      });
     } else if (col1 == 2) {
      // 修改性别用下拉列表
      final Combo comb = new Combo(table, SWT.READ_ONLY);
      comb.setItems(new String[] { "男", "女", "未知" });
      comb.addSelectionListener(new SelectionAdapter() {
       @Override
       public void widgetSelected(SelectionEvent e) {
        tableitem.setText(col1, comb.getText());
        comb.dispose();
        super.widgetSelected(e);
       }
      });
      editor.setEditor(comb, tableitem, column);
     } else {
      // 其他的修改都是用文本框
      final Text txt = new Text(table, SWT.NONE);
      txt.setText(tableitem.getText(col1));
      txt.forceFocus();
      editor.setEditor(txt, tableitem, col1);
      txt.addModifyListener(new ModifyListener() {

       @Override
       public void modifyText(ModifyEvent e) {
        tableitem.setText(col1, txt.getText());

       }
      });
     };
    }
   });
  }
 
 }
}

原创粉丝点击