大家看看这一行是干什么的---List的使用
其中commsndAction中开头是这样的:
public void commandAction(Command c, Displayable d) {
if (d.equals(menuList)) {
if (c == List.SELECT_COMMAND) {
int select = ((List)d).getSelectedIndex(); //得到//选中的菜单项
switch(select) {
case 0:
canvas.drawLine(); // 绘制直线
display.setCurrent(canvas);
break;
//我不理解int select = ((List)d).getSelectedIndex();是怎么回事,特别是((List)d).
getSelectedIndex()又究竟是怎么回事?
------解决方案--------------------其实d是一个List,但是它却被Displayable引用,所以如果不强制转换为List,就无法使用List的getSelectedIndex方法.
------解决方案--------------------((List)d)是将Displayable类型的参数强制转换成List类型,也就是上塑造型.getSelectedIndex()是List类型的一个方法,是获得当前选项的索引号.
------解决方案--------------------把监听对象Displayable强制转换成List然后取得其被选种的下标值,再进行switch操作~
------解决方案--------------------commandAction(Command c, Displayable d),
当高级事件发生的时候(具体是命令键被按下还是松开的时候,API文档当中没有说明,个人感觉是命令键被按下的时候,因为你按下一直不松开命令会被响应处理),这个方法会接收到两个系统传递过来的参数,第一个是Command类型的,保存在c中,它表示用户按下的命令是谁,第二个是Displayable类型的保存在d当中,它表示用户在哪个 可显示对象 里面触发了高级事件.因为LCDUI当中 有很多个 可显示对象 都可以触发/监听 commandAction动作,所以为了通用性,API用这些 可显示对象 的 父类实例 来进行传递,所以你在做其他操作之前需要把 父类对象 还原成 子类对象 ,然后再做其他的事情,这样才能对应执行 子类对象 的(真正触发了高级事件的对象)方法.