swt table实例

package cn.zcq100.Demo1;
import javax.swing.text.TabExpander;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
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;
import org.eclipse.swt.layout.FillLayout;
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.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
public class TableDemo {
private TableEditor editor = null;
private Table table = null;
public static void main(String[] args) {
   new TableDemo();
}
private TableDemo() {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   shell.setText("table小工程");
   createTable(shell);
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
    if (!display.readAndDispatch())
     display.sleep();
   }
   display.dispose();
}
/**
* 创建表格
* 
* @param shell
*/
private void createTable(final Shell shell) {
   table = new Table(shell, SWT.MULTI | SWT.FULL_SELECTION);
   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 col5 = new TableColumn(table, SWT.LEFT);
   col5.setText("性别");
   col5.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);
   /**
   * 添加表格数据
   */
   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("删除");
   menuitem1.addListener(SWT.Selection, new Listener() {
    @Override
    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());
        
        }
       });
      }
     }
    });
   }
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值