swt table 中 文本 下拉列表 spiner 等用法

package com.ln.epos.ui.view;
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());
       
         }
        });
       }
      }
     });
    }
}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值