- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 表格和数据绑定
第8章 表格和数据绑定 在用户界面中,大量的数据需要通过表格或者树状列表的形式显示。在SWT中,表格部件是Table,树状列表部件是Tree。这两个部件的使用比其他部件复杂一些。特别是这两个部件在实际应用中往往需要和数据库关联,更增添了更多的难度。所以这两个部件都分别独立安排一章进行学习。在本章将学习SWT中 Table的用法。 8.1 Table的基本用法 一个Table部件,从简单到复杂,可以演变出各种各样的应用。简单的可是只是显示一些数据列表,复杂的,可以变成类似Excel那样的电子表格。在这一小节中,先学习Table的基本应用,建立简单的、只能显示数据的表格。在后面的小节中,再逐步为Table添加更多复杂的功能。 8.1.1 一个简单的Table 先看一个简单的例子,了解一下Table的基本用法。 8.1.2 带有表头和网格线的Table 通过上面的简单例子,学习了表格的基本应用:首先是建立表格,然后是往表格中添加表格的行,每行是一个TableItem对象。 8.1.3 Table的相关样式 在上面的例子中,接触到两个Table的相关样式SWT.MULTI和SWT.FULL_SELECTION。SWT.MULTI定义这个表格的行可以多选,SWT.FULL_SELECTION则定义选择的样式为整行选择。与SWT.MULTI相反的样式是SWT.SINGLE,SWT.SINGLE定义表格的行一次只能选一行。Table上应用的样式还有下面几个: CHECK:每行的第一列显示一个检查框。 HIDE_SELECTION:被选的行不进行高亮显示。 VIRTUAL:使用虚拟表格。 如果要让表格显示表头和表格线,还要设置两个属性。正如这个例子中那样: table.setLinesVisible(true); table.setHeaderVisible(true); 8.1.4 带有检查框的表格 试着在构造Table时加入CHECK这个样式。例子中则是如下面这样修改。运行后则如图8-3那样,在第一列出现了检查框。 Table table = new Table(shell, SWT.MULTI | SWT.BORDER| SWT.FULL_SELECTION | SWT.CHECK); 8.1.5 TableItem的应用 回过头来详细了解一下TableItem应用。一个TableItem就是Table中的一行。TableItem关键的方法有下面几个: void setImage(Image[] images): void setImage(int index, Image image): void setText(int index, String string): void setText(String string): void setText(String[] strings): 8.1.6 TableColumn的应用 前面的例子已经知道TableColumn是用于定义一个表格中的列。TableColumn的主要常用方法有: void setAlignment(int alignment): void setImage(Image image): void setMoveable(boolean moveable): void setResizable(boolean resizable): void setText(String string): void setToolTipText(String string): void setWidth(int width): void pack(): 8.2 解决海量数据的性能问题 前面的两个例子都没有考虑到表格的性能问题,如果只是几十到一百这样的数据量,以现在的计算机性能,一瞬间就可以处理完,对于用户来说不会感觉到性能上有什么问题。但是随着数据量的增多,尤其是上万甚至数十万的数据量,用上面简单的添加TableItem的方法就会出现性能的问题了。大家可以试试把上面循环中的100修改为100000。可以看到表格的区域空白了半天才显示出数据,而且用户在移动鼠标时候有拖延的感觉。为了改善这种操作体验,有两种方法,一种是使用SWT的虚拟表格,另一种是使用线程。 8.2.1 用虚拟表格提升性能 虽然很多时候需要在一个表格中容纳大量数据,从用户使用的角度看,用户不一定每次都要看完所有数据。这样就不需要把所有数据(TableItem)一次添加到表格中。只有当用户看到(通常是拖拉滚动条)的时候,才真正构造对应的TableItem。这样用户第一眼看到的数据是有限的,表格一瞬间就显示出来了。这种形式有点像Web应用中的分页。大多
文档评论(0)