SWT/JFACE表格Table可编辑
今天刚好遇到了这个问题写了个例子,。
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可编辑相关推荐
- layui关闭表格编辑_Layui表格table关闭拖拽列宽、禁用拖拽列宽
table 模块是Layui的又一走心之作,在 layui 2.0 的版本中全新推出,是 layui 最核心的组成之一.它用于对表格进行一些列功能和动态化数据操作,涵盖了日常业务所涉及的几乎全部需求. ...
- bootstrap table 表格支持shirt 多选_bootstrap-table 表格行内编辑实现
这篇文章向大家介绍一下如何使用bootstrap table插件实现表格的行内编辑功能. 我的web前端学习交流群点击进入1045267283,欢迎加入! 先放一张效果图: 应用场景 之前的项目也是采 ...
- python测试开发django-173.bootstrap实现table表格行内编辑
前言 网上看了很多基于bootstrap的table表格行内编辑,需要基于bootstrap-table,bootstrap-table-edit,x-editable等插件,写的很复杂. 我想实现的 ...
- Antd Table 可编辑表格
antd Table 官方文档提及了 可编辑单元格.可编辑行,这里解决 可编辑表格 主要思路是将 antd Table 可编辑行 与 antd Form.List 相结合,将Table视为 Form. ...
- jeecgboot前端自定义组件、JgEditable Table行编辑表格
上一篇 本次示例全部是在新建的Demo.vue中操作 jeecgboot前端自定义组件 1.首先,在webstrom中找到ant-design-vue-jeecg/src/views/jeecg/mo ...
- 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.下 ...
- 如何在Eclipse 3.6.2中安装swt/JFace
如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...
- Datatables实现表格行内编辑功能
表格行内编辑功能通过操作DOM来实现,最终实现效果如下代代码 html <table class="table table-striped table-bordered table-h ...
- layui静态表格设置滚动条_解决layui数据表格table的横向滚动条显示问题
解决layui数据表格table的横向滚动条显示问题 加上这段样式代码就可以解决了: body{overflow-y: scroll;} /* 禁止刷新后出现横向滚动条 */ ps:这个问题fly社区 ...
最新文章
- ALB Ingress 发布,轻松应对云原生应用流量管理
- IKVM 编程武林之.NET派的北冥神功
- C# 爬虫:疫情实时信息图
- 作者:洪文兴(1980-),男,厦门大学自动化系副教授,厦门信息产业与信息化研究院执行院长。...
- 致Android开发者:APP 瘦身经验总结
- 分布式存储系统学习笔记(二)—分布式文件系统(4)—内容分发网络(CDN)
- 计算机操作系统(第四版)第二章 习题答案
- 2019最新高级JAVA架构师之路(价值3万元的教程-年薪百万计划)
- 重学Java 8新特性 | 第1讲——我们为什么要学习Java 8新特性?
- 并发编程、并行、多线程、锁、同步、异步、多线程、单线程、阻塞io、非阻塞io
- docker安装nessus
- 链桨PaddleDTX系列 - xdb源码分析(一)
- Namenode HA原理详解
- SuperMap之轨迹
- Apollo Routing拓扑地图生成源码学习
- 聚美优品根据ID取商品详情 API
- 随心所欲b超工作站图像处理_正版B超随心所欲超声工作站vista版最新版模拟数字影像软件win7...
- Ping Ping Ping—命令执行
- 深圳药厂洁净车间装修SICOLAB深圳药厂GMP洁净车间装修
- Nginx下配置Https,测试环境的完整过程