解读 LWUIT 之六:使用表格(Table)和树(Tree)
来源:互联网 发布:92game 免费源码 编辑:程序博客网 时间:2024/05/21 10:14
解读 LWUIT 之六:使用表格(Table)和树(Tree)
LWUIT 开发指南下载
作者写的 Hello Table、Hello Tree 源代码下载
通过上面几篇博客的介绍,我们对 LWUIT 的控件有了一个大概的了解。在这篇博客里,我们将按照官方开发指南里的顺序继续介绍两个新的 LWUIT 控件—— Table 和 Tree,着重介绍它们的使用,并附加示例源代码。而对于它们的 MVC 应用没有过多介绍,MVC 不是一二个小小的 demo 就可以说的明白的,需要我们在项目中不断地应用与领会。关于更多 LWUIT 的 MVC 的介绍请参考作者的后续博客。
注:源码编写中关于 .res 的编写这里不再赘述,详细编写步骤请参考作者的前一篇博客《解读 LWUIT 之二:关于 LWUIT 开发指南中的 Hello World》。每个项目的 .res 具体配置请到作者上传源码中的 res 目录下使用 ResourceEdit 查看。
com.sun.lwuit.table.Table 控件
Table 是一种容量大小可变的表格控件,它的项可以设置为可编辑或者不可编辑。正如下篇博客中将要介绍的 List 控件,Table 也有它自己的模型组件(TableModel)并且有一个默认的模型实现(DefaultTableModel)。
不同于 List 的是,创建 Table 必须首先创建一个表示数据模型的 TableModel。通过重写 TableModel 的 isCellEditable 方法可以设定表的指定单元是否可以编辑。
使用 Table 控件继承自 Container 的 setScrollableX 方法可以设置表格能够沿 X 轴左右滚动,这样我们的表就可以在屏幕后边自由“扩展”了。Table 不像 List 似的拥有自己的 CellRenderer(ListCellRenderer),专门负责为每一个实例的展示框架填充展示内容,每一个 继承自 Table 的类必须 DIY,通过重写 Table 的 createCell 方法自行负责框架填充。请注意 createCell 能够接收用户事件并且演示动画效果,对于 Table 构架的展示是动态的,因此在 Table 的生命周期中 createCell 会占用一定的系统资源。绚烂的特效的背后总是有一定的性能付出作为代价的。
下面是作者写的 HelloTable 源代码:
下面是作者写的 HelloTable 运行效果图:
com.sun.lwuit.tree.Tree 控件
Tree 的设计非常类似于 Table,它用来表达一些划分等级的数据,比如一个文件体系。如果某些基础数据具有自己的等级划分,比如一个公司的员工结构或者一个文件系统,那么这些基础数据可以用 Tree 来表达。
针对这个原因,LWUIT 专门为 Tree 设计了一个单独的模型,TreeModel 接口。为 Tree 设计一个模型类是没有意义的,因为这样一个类并不能被当做通用的 Tree 的数据模型,因此 Tree 不像 List 和 Table 那样,它没有 DefaultTreeModel。我们必须自行通过实现 TreeModel 的 getChildren 和 isLeaf 方法来创建 Tree 的数据模型。
getChildren 方法用来返回传入节点的所有子节点。根节点是不被显示在屏幕上的,如果想返回根节点的所有子节点可以以 null 为参数传入。isLeaf 方法返回传入节点是否叶子节点,叶子节点没有子节点并且无法展开。
HelloTree 源代码如下:
Node.java 源代码:
HelloMidlet.java 源代码:
HelloTree 运行效果图:
当然,这只是一个简单粗糙的 Tree demo。读者可以通过调用 Tree 的静态方法,诸如 setFolderIcon、setFolderOpenIcon、setNodeIcon 来设置节点图标,达到跟电脑文件系统一样的视觉效果。如果这样还不满意的话,还可以通过自定义 Tree(即写一个继承自 Tree 的类),重写 Tree 的 createNodeComponent 方法,然后通过自定义节点图标、节点格式来达到更加绚丽的效果。
- 解读 LWUIT 之六:使用表格(Table)和树(Tree)
- 解读 LWUIT 之九:使用布局管理器(Layout Manager)
- 解读 LWUIT 之三:LWUIT 控件(上)
- 解读 LWUIT 之四:LWUIT 控件(中)
- 解读 LWUIT 之五:LWUIT 控件(下)
- 解读 LWUIT 之十:画笔(Painters)
- 解读 LWUIT 之十一:风格(com.sun.lwuit.plaf.Style)对象
- 解读 LWUIT 之八:模态对话框(Dialog)
- 解读 LWUIT 之十三:可插拔主题(Theming)
- 解读 LWUIT 之十二:LWUIT Implementation
- LWUIT扩展之tree
- LWUIT table 源码 表格的实现
- LWUIT table 源码 表格的实现
- 解读 LWUIT 之七:深入理解 LWUIT 框架的 MVC
- LWUIT的List运用系列(六) List的终极使用(上篇)
- LWUIT 上使用List实现表格
- LWUIT 上使用List实现表格
- 如何使用displaytag表格(table)组件
- Linux本地root密码破解方法
- http://www.reddragonfly.org/abscn/dosbatch.html
- C语言字节对齐详解
- 解决使用迅雷下载页面而不是文件的问题
- CR LF (转)
- 解读 LWUIT 之六:使用表格(Table)和树(Tree)
- 关于PHP has encountered an Access Violation问题的处理
- powerdesigner 经验小结
- OPhone中使用MediaRecorder实现录音
- C# 清理 IE 地址栏记录
- 额发送地方
- 抽象类与接口的异同
- 主页上加入Webmail的自动登陆
- 为自由而战斗