先说界面导航问题
【程序编程相关:My work flow chart】
每次看到那个menu就感觉很不爽,可能是me怪癖,但仅仅为了找到某个功能按钮就需要按下“menu”,进入选项窗口(注意当前浏览的页面被遮盖),找到需要的功能键,按下,然后出现结果,多麻烦呀. 【推荐阅读:从程序员到CEO 】
menu的出现是因为对当前displayable(子类分别是screen与canvas)加入的命令command多于两个(起码对一般的手机来说这个数字是两个,据java docs介绍也有可以容纳三个soft button的,me暂时没有见过,先不做考虑的说).这样,要想不出现“menu”,当前displayable只能加入两个command.但是要实现一个完整的读书程序,仅仅两个command肯定是不够的.me的解决思路是定义一个command list存放命令列,displayable上只加入两个command(以后统称屏显command),然后通过按键对命令列进行轮循来实现功能按钮的查阅.左侧的屏显command固定为操作帮助,介绍操作方法,因为这个界面导航的更新对大部分朋友来讲肯定不会马上适应,呵呵;另外一侧的屏显command,具体来说就是按下手机上右方向键,自动换为命令列的下一个command,左键则自动换为上一个command.呵呵,简单吧 【扩展信息:在Repeater控件中使用if语句】 如何实现确实是个难题.me以为网上应该有此类文章的,搜了半天,google出了一大堆结果,有用的不多,直接有用的几乎没有.不过mingjava的一篇“应用mvc设计模式解决j2me应用程序导航问题 ”(http://blog.csdn.net/mingjava/archive/2004/06/29/30053.aspx)看起来好像很对题.仔细学习了一下,看不懂的居多,中间好像设计设计模式问题,这可不是me目前的水平可以承受的了的,呵呵.不过中间谈到把midlet作为参数传入控制器的参数对me启发不小. “读艺”程序的类参考一般j2me程序是这样的一个构成模式,继承自midlet的主类readart,继承自canvas的子类artfield(不好意思,仍然脱胎于那个timer例程,所以叫做……field,嘿嘿)作为主现实画布,与一个自定义的article类用于组织文本,以及其他辅助类.翻了一下docs,displayable不支持针对手机键盘的操作,也就是说诸如按下某键对command进行改变好像不行.因此要实现对命令列的轮循,只能在canvas中实现,因为canvas有对键动作的接口keypressed.通过对键值的查询可以知道是哪个键按下了,然后做出相应的改变就行了.至于命令列的传递通过artfiled的构建参数实现,即在readart中定义commandlist,然后在生成artfield的时候作为构建器参数传入,然后在artfield的keypressed中对commandlist进行操作. 查阅docs,发现canvas可以直接实现commandlistener.马上动手实现,但是在显示的时候却不能正确显示,不知道是canvas对commandlistener的支持有限还是me没有找到合适的方法.另外,这时候me才发现command居然不支持setlabel,也就是说一旦生成label就是不可更改的了.这样只好把命令列中的命令全部构建好,然后再调用.... 下一页