完整的SWT示例:可编辑的table_第1页
完整的SWT示例:可编辑的table_第2页
完整的SWT示例:可编辑的table_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、完整的SWT示例:可编辑的table在项目开发时用到了table,但是想直接编辑表格中的内容,但是SWTTable是不支持直接编辑功能的,查阅了相关资料后,利用TableEdior实现了可编辑的Table,代码如下:importorg.eclipse.swt.SWT;importorg.eclipse.swt.custom.TableEditor;importorg.eclipse.swt.events.FocusAdapter;importorg.eclipse.swt.events.FocusEvent;importorg.eclipse.swt.events.ModifyEvent;im

2、portorg.eclipse.swt.events.ModifyListener;importorg.eclipse.swt.graphics.Point;importorg.eclipse.swt.graphics.Rectangle;importorg.eclipse.swt.layout.GridData;importorg.eclipse.swt.layout.GridLayout;importorg.eclipse.swt.widgets.Control;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widg

3、ets.Event;importorg.eclipse.swt.widgets.Listener;importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Table;importorg.eclipse.swt.widgets.TableColumn;importorg.eclipse.swt.widgets.TableItem;importorg.eclipse.swt.widgets.Text;publicclassEditableTableprivateTabletable;privateDisplaydispla

4、y;privatestaticprivatestaticprivatestaticintITEM_COUNT=10;intCOLUMN_COUNT=4;intCOLUMN_WIDTH=150;publicvoidTest()display=newDisplay();Shellshell=newShell(display);shell.setText(SWT示例:可编辑的Table);shell.setLayout(newGridLayout();/Table的初始化table=newTable(shell,SWT.BORDER|SWT.FULL_SELECTION);table.setHead

5、erVisible(true);table.setLinesVisible(true);table.setItemCount(ITEM_COUNT);table.setLayoutData(newGridData(SWT.FILL,SWT.FILL,true,true);TableColumncolumns=newTableColumnCOLUMN_COUNT;for(inti=0;iCOLUMN_COUNT;i+)columnsi=newTableColumn(table,SWT.CENTER);columnsi.setText(Column+newInteger(i+1).toString

6、();columnsi.setWidth(COLUMN_WIDTH);/监听对table的双击事件,执行可编辑操作table.addListener(SWT.MouseDoubleClick,listener);shell.open();while(!shell.isDisposed()if(!display.readAndDispatch()display.sleep();shell.dispose();display.dispose();/为每个Tableltem增加Listener,当有Selection事件时,根据行和列可以定位到每一个Cell,然后就可以处理事件,/为一个Cell添加

7、可编辑的方法是增加一个TableEditorprivateListenerlistener=newListener()privateintEDITABLECOLUMN;OverridepublicvoidhandleEvent(Eventevent)/获取鼠标点击的位置Pointpoint=newPoint(event.x,event.y);/得到鼠标点击的行(item)TableItemitem=table.getItem(point);if(item=null)return;for(inti=0;i4;i+)/得到选中行(item)的每一列的矩形范围,根据鼠标点击位置point来进一步确定

8、是哪一格(cell)Rectanglerect=item.getBounds(i);if(rect.contains(point)EDITABLECOLUMN=i;finalTableEditoreditor=newTableEditor(table);ControloldEditor=editor.getEditor();if(oldEditor!=null)oldEditor.dispose();/添加Text,并使高度符合item的高度finalTexttext=newText(table,SWT.NONE);puteSize(SWT.DEFAULT,table.getItemHeigh

9、t();/调整editor的高度宽度editor.grabHorizontal=true;editor.minimumHeight=text.getSize().y;editor.minimumWidth=text.getSize().x;editor.setEditor(text,item,EDITABLECOLUMN);text.setText(item.getText(EDITABLECOLUMN);text.forceFocus();/开始编辑的事件text.addModifyListener(newModifyListener()OverridepublicvoidmodifyText(ModifyEvente)text.setForeground(display.getSystemColor(SWT.COLOR_RED);editor.getItem().setText(EDITABLECOLUMN,text.getText(););/编辑后内容恢复表格前景色text.addFocusListener(newFocusAdapter()OverridepublicvoidfocusLos

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论