MIDP高级UI的使用(二) List组件
2009-09-19 00:00:00 来源:WEB开发网我们在命令处理函数commandAction() 中,可以用上面提到的几种方法来对用户选择的操作进行侦测,同时定义好对应的处理函数,来达到对应的处理效果。
Implicit( 隐含式)
IMPLICIT( 隐含式) 其实和上面的单选式没什么大的区别,唯一不同的地方在于命令的处理机制上有一些细微的区别:Choice.IMPLICIT 类型的List 会在用户选择之后立刻引发事件,并将List.SELECTCOMMAND 作为第一个参数传入。
如果我们不希望该类型的 List 在按下后发出该命令作为commandAction () 的第一个参数传入,我们可以用setSelectCommand(null) ,将它关掉,需要注意的是,这样做的后果是使
commandAction() 接受到的第一个参数为null 。
Multiple( 多选式)
multiple( 多选式) 类型的List 顾名思义,可以进行多重选择,其他的地方和上面两种类型大同小异,可以进行多项的List 选择。
下面给出了一个包含这三种形式的List的Demo代码:
1. /*
2. * To change this template, choose Tools | Templates
3. * and open the template in the editor.
4. */
5. package com.thinkrace.list;
6. import java.io.IOException;
7. import javax.microedition.lcdui.Choice;
8. import javax.microedition.lcdui.Command;
9. import javax.microedition.lcdui.CommandListener;
10. import javax.microedition.lcdui.Display;
11. import javax.microedition.lcdui.Displayable;
12. import javax.microedition.lcdui.Image;
13. import javax.microedition.lcdui.List;
14. import javax.microedition.midlet.*;
15. /**
16. * @author pengjw
17. */
18. public class ListDemo extends MIDlet implements CommandListener{
19. private static final Command CMD_EXIT = new Command("Exit",Command.EXIT,1);
20. private static final Command CMD_BACK = new Command("Back",Command.BACK,1);
21. private Display display;
22. private List mainList;
23. private List exclusiveList;
24. private List implicitList;
25. private List mutipleList;
26. private boolean firstTime;
27. private Image[] imageArray;
28. public ListDemo(){
29. display = Display.getDisplay(this);
30. String[] stringArray = {
31. "Option A",
32. "Option B",
33. "Option C",
34. "Option D"
35. };
36. imageArray = null;
37. //ExlcusiveList 的声明
38. exclusiveList = new List("Exclusive",Choice.EXCLUSIVE,stringArray,imageArray);
39. exclusiveList.addCommand(CMD_BACK);
40. exclusiveList.addCommand(CMD_EXIT);
41. exclusiveList.setCommandListener(this);
42. //ImplicitList 的声明
43. implicitList = new List("Implicit",Choice.IMPLICIT,stringArray,imageArray);
44. implicitList.addCommand(CMD_BACK);
45. implicitList.addCommand(CMD_EXIT);
46. implicitList.setCommandListener(this);
47. //MutipleListde 的声明
48. mutipleList = new List("Multiple",Choice.MULTIPLE,stringArray,imageArray);
49. mutipleList.addCommand(CMD_BACK);
50. mutipleList.addCommand(CMD_EXIT);
51. mutipleList.setCommandListener(this);
52. }
53. public void startApp() {
54. if(firstTime){
55. imageArray = null;
56. }
57. try {
58. //注意这里的图片路径是相对的,图片格式应该为png
59. Image icon = Image.createImage("/images/java.png");
60. imageArray = new Image[]{
61. icon,
62. icon,
63. icon
64. };
65. } catch (Exception e) {
66. e.printStackTrace();
67. }
68. String[] stringArray = {
69. "Exclusiver",
70. "Implicit",
71. "Multiple"
72. };
73. //mainList主菜单
74. mainList = new List("Choose Type",Choice.IMPLICIT,stringArray,imageArray);
75. mainList.addCommand(CMD_EXIT);
76. mainList.setCommandListener(this);
77. display.setCurrent(mainList);
78. firstTime = false;
79. }
80. public void pauseApp() {
81. }
82. public void destroyApp(boolean unconditional) {
83. }
84. //实现CommandListener接口的commandAction方法
85. public void commandAction(Command c, Displayable d) {
86. if(d.equals(mainList)){
87. if(c==List.SELECT_COMMAND){
88. if(d.equals(mainList)){
89. switch(((List)d).getSelectedIndex()){
90. case 0:
91. display.setCurrent(exclusiveList);
92. break;
93. case 1:
94. display.setCurrent(implicitList);
95. break;
96. case 2:
97. display.setCurrent(mutipleList);
98. break;
99. }
100. }
101. }
102. }else{
103. if(c==CMD_BACK){
104. display.setCurrent(mainList);
105. }
106. }
107. if(c==CMD_EXIT){
108. destroyApp(false);
109. notifyDestroyed();
110. }
111. }
112. }
113.
- ››UIActionSheet最后一项失去点击效果的解决办法
- ››UI设计技巧:网页结构清晰明了的结构设计
- ››UiModeManager设置夜间模式和行车模式
- ››高级SEO的涵义意味着是什么
- ››高级 DBA 和开发者篇,第 3 章:DB2 高可用性灾难...
- ››高级 DBA 和开发者篇,第 1 章:DB2 基础
- ››高级 DBA 和开发者篇,第 2 章:数据库集群技术
- ››高级 jQuery:让好的应用程序变成强大的应用程序
- ››MIDP高级UI的使用(四) Alert
- ››MIDP高级UI的使用(二) List组件
- ››MIDP高级UI的使用(三) TextBox
- ››MIDP高级UI的使用(一) LCDUI包的体系结构
更多精彩
赞助商链接