SWT/JFACE表格Table可编辑
2009-10-12 22:52

今天刚好遇到了这个问题写了个例子,。

public class Test {
public static String []NAMES={"周杰伦","王力宏","SHE"};//定义下拉框内的值
public static void main(String[] args) {
Display display=new Display();
Shell shell=new Shell(display);
shell.setLayout(new FillLayout());
//自己写的生成表格的工具类,主要用来生成表格并显示数据,
TableKiller tk=new TableKiller();
tk.setInputType("com.client.util.People", new String[]{"id","name","pass"});
tk.createTable(shell, new String[]{"ID","姓名","密码"});
        TableViewer tv=tk.getTableViewer();
        //以上是自己写的工具类,下面都一样
tv.setInput(PeopleFactory.getPeoples());
       //PeopleFactory.getPeoples()模拟从数据库取出数据,Hibernate的话就是从DAO中得到数据

//以下是表格的编辑程序段

tv.setColumnProperties(new String[]{"id","name","pass"});
//设置每一列的别名,也可以是其他的用来标识某一列
CellEditor []cellEditor=new CellEditor[3];
cellEditor[0]=null;
       //设空
cellEditor[1]=new ComboBoxCellEditor(tv.getTable(),NAMES,SWT.READ_ONLY);
        //下拉框
cellEditor[2]=new TextCellEditor(tv.getTable());
        //text
//设置每一列的单元格编辑组建CellEditor
tv.setCellEditors(cellEditor);
tv.setCellModifier(new MyCellModifier(tv));
        //设置表格修改器
        //下面的程序可以对Text中内容进行验证,例如只能为数字,等等
Text text=(Text)cellEditor[2].getControl();
text.addVerifyListener(new VerifyListener(){

public void verifyText(VerifyEvent e) {
   String inStr=e.text;
   if(inStr.length()>0){
    System.out.println(inStr);
                   //自己验证
   }
   
   }
  
});

shell.open();
while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) {
    display.sleep();
   }
}
}
}

//自己创建的修改器,实现ICellModifier 接口
public class MyCellModifier implements ICellModifier {
private TableViewer tv;//传入tableviewer

//构造函数
public MyCellModifier(TableViewer tv){
   this.tv=tv;
}

//此方法用来设定是否可以编辑,例如
            /**
                if(property.equals("name")){//name单元格可以修改
    return true;
   }else if(property.equals("pass")){//pass单元格不可修改
    return true;
   }
               **/
         //可以根据property) 判断是否可以修改
public boolean canModify(Object element,String property) {
  
   return true;
  
}

//此方法决定单击单元格出现CellEditor时显示什么值
public Object getValue(Object element, String property) {
   People p=(People) element;
   if(property.equals("name")){
    return getNameIndex(p.getName());
   }else if(property.equals("pass")){
    return p.getPass();
   }
   throw new RuntimeException("错误的列名"+property);
}

private int getNameIndex(String name){
   for(int i=0;i<Test.NAMES.length;i++){
    if(Test.NAMES[i].equals(name))
     return i;
   }
   return -1;
}

//从CellEditor取得单元格的值
public void modify(Object element, String property, Object value) {
   TableItem item=(TableItem)element;
        People p=(People)item.getData();
        if(property.equals("name")){
        Integer comboIndex=(Integer)value;
        String newName=Test.NAMES[comboIndex];
        p.setName(newName);
        }else if(property.equals("pass")){
        String pass=(String)value;
        if(pass.equals(""))
           return;
           p.setPass(pass);
        }else{
        throw new RuntimeException("错误的列名:"+property);
        }
        tv.update(p, null);//更新在表格上显示
}

}

SWT/JFACE表格Table可编辑相关推荐

  1. layui关闭表格编辑_Layui表格table关闭拖拽列宽、禁用拖拽列宽

    table 模块是Layui的又一走心之作,在 layui 2.0 的版本中全新推出,是 layui 最核心的组成之一.它用于对表格进行一些列功能和动态化数据操作,涵盖了日常业务所涉及的几乎全部需求. ...

  2. bootstrap table 表格支持shirt 多选_bootstrap-table 表格行内编辑实现

    这篇文章向大家介绍一下如何使用bootstrap table插件实现表格的行内编辑功能. 我的web前端学习交流群点击进入1045267283,欢迎加入! 先放一张效果图: 应用场景 之前的项目也是采 ...

  3. python测试开发django-173.bootstrap实现table表格行内编辑

    前言 网上看了很多基于bootstrap的table表格行内编辑,需要基于bootstrap-table,bootstrap-table-edit,x-editable等插件,写的很复杂. 我想实现的 ...

  4. Antd Table 可编辑表格

    antd Table 官方文档提及了 可编辑单元格.可编辑行,这里解决 可编辑表格 主要思路是将 antd Table 可编辑行 与 antd Form.List 相结合,将Table视为 Form. ...

  5. jeecgboot前端自定义组件、JgEditable Table行编辑表格

    上一篇 本次示例全部是在新建的Demo.vue中操作 jeecgboot前端自定义组件 1.首先,在webstrom中找到ant-design-vue-jeecg/src/views/jeecg/mo ...

  6. Eclipse 3.7 3.x SWT/Jface 开发环境搭建

    Eclipse 3.7 3.x SWT/Jface 开发环境搭建 原文http://blog.csdn.net/kimsoft/article/details/7239651 1.准备工作 1.1.下 ...

  7. 如何在Eclipse 3.6.2中安装swt/JFace

    如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...

  8. Datatables实现表格行内编辑功能

    表格行内编辑功能通过操作DOM来实现,最终实现效果如下代代码 html <table class="table table-striped table-bordered table-h ...

  9. layui静态表格设置滚动条_解决layui数据表格table的横向滚动条显示问题

    解决layui数据表格table的横向滚动条显示问题 加上这段样式代码就可以解决了: body{overflow-y: scroll;} /* 禁止刷新后出现横向滚动条 */ ps:这个问题fly社区 ...

最新文章

  1. ALB Ingress 发布,轻松应对云原生应用流量管理
  2. IKVM 编程武林之.NET派的北冥神功
  3. C# 爬虫:疫情实时信息图
  4. 作者:洪文兴(1980-),男,厦门大学自动化系副教授,厦门信息产业与信息化研究院执行院长。...
  5. 致Android开发者:APP 瘦身经验总结
  6. 分布式存储系统学习笔记(二)—分布式文件系统(4)—内容分发网络(CDN)
  7. 计算机操作系统(第四版)第二章 习题答案
  8. 2019最新高级JAVA架构师之路(价值3万元的教程-年薪百万计划)
  9. 重学Java 8新特性 | 第1讲——我们为什么要学习Java 8新特性?
  10. 并发编程、并行、多线程、锁、同步、异步、多线程、单线程、阻塞io、非阻塞io
  11. docker安装nessus
  12. 链桨PaddleDTX系列 - xdb源码分析(一)
  13. Namenode HA原理详解
  14. SuperMap之轨迹
  15. Apollo Routing拓扑地图生成源码学习
  16. 聚美优品根据ID取商品详情 API
  17. 随心所欲b超工作站图像处理_正版B超随心所欲超声工作站vista版最新版模拟数字影像软件win7...
  18. Ping Ping Ping—命令执行
  19. 深圳药厂洁净车间装修SICOLAB深圳药厂GMP洁净车间装修
  20. Nginx下配置Https,测试环境的完整过程

热门文章

  1. 保险箱模拟JAVA_保险箱模拟器
  2. Excel高级图表制作③——漏斗图/转化路径图
  3. 决胜移动互联网 网址导航迎来新曙光
  4. 水塔水位控制器单片机c语言,基于单片机的水塔水位控制器设计.doc
  5. php 换行 html_PHP实现html源码中回车换行输出_PHP教程
  6. linux常用命令 ps 常用命令的使用
  7. 室内定位系统(IPS):不只是定位
  8. 元宇宙的六大技术支柱
  9. 兔子暗杀事件,又称十只兔子的故事
  10. 关于TranslateAnimation几个构造函数的理解