J2ME从零开始(学习笔记9)
2009-09-24 21:32
162 查看
5 Gauge
在高级图像用户界面中,有时侯会用到进度条之类的显示,或者调解音量大小的显示,使用Gauge便可以实现这个功能。
Gauge的构造方法:Gauge(String label, Boolean interactive, int maxValue, int initialValue)
第二个参数interactive表示的含义是看该控件是否可以交互,如果为true表示可以;maxValue为Gauge的最大值,initialValue是Gauge的初始值。
这里用到了Timer和TimerTask这两个类。Timer是个定时器,主要是用来启动TimerTask,即任务器,而TimerTask主要作用是启动线程,让应用程序中的相关变量在线程中得到控制。TimerTask是个抽象类不能被直接实例化因此这里用到了MyTask这个类来继承TimerTask。
6 TextField
TextField与TextBox及其相似,只不过前者相对于属于小型文本编辑框,而且是继承自Item,它不可以独立显示在界面上,需要通过Form来添加,而TextBox是可以独立显示的。
TextField的构造方法TextField(String label, String text, int maxSize, int constrains )
7 ChoiceGroup
ChoiceGroup是选项组,继承了Item又实现了Choice接口,与List用法相似。区别是ChoiceGroup是显示在Form内的选项组,而List是单独显示控件。还有一点ChoiceGroup不支持Choice.IMPLICIT,而支持Choice.POPUP,而List支持前者不支持后者。
6 Alert 控件
Alert在高级图形用户界面中用来提示消息作用,如同一般应用程序中的消息提示框。Alert可以通过AlertType来向用户显示图标或者声音,让用户感触更深。
AlertType.ALARM 响铃提示
AlertType.CONFIRMATION 确认提示
AlertType.ERROR 错误提示
AlertType.INFO 信息提示
AlertType.WARNING 警告提示
此外Alert控件可以和Gauge控件结合使用来提示信息,但需遵循以下原则:
1 不可交互模式
2 不属于其他任何一个容器(如其他Alert或Form)
3 不能有任何命令
4 不可以设置ItemCommanListener
5 标签须为null
6 getPreferredWidth() 和 getPreferredHeight() 返回值都为-1
7 布局必需为LAYOUT_DEFAULT
在高级图像用户界面中,有时侯会用到进度条之类的显示,或者调解音量大小的显示,使用Gauge便可以实现这个功能。
Gauge的构造方法:Gauge(String label, Boolean interactive, int maxValue, int initialValue)
第二个参数interactive表示的含义是看该控件是否可以交互,如果为true表示可以;maxValue为Gauge的最大值,initialValue是Gauge的初始值。
package J2ME001; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class GaugeMIDlet extends MIDlet implements CommandListener{ private Form form; private Gauge gauge1; private Gauge gauge2; private Timer timer; private MyTask myTask; private Command cmdExit=new Command("Exit",Command.EXIT,1); public GaugeMIDlet(){ gauge1=new Gauge("不可交互Gauge",false,5,0); gauge2=new Gauge("可交Gauge",true,5,0); form =new Form("Gauge显示"); form.setCommandListener(this); form.append(gauge1); form.append(gauge2); form.addCommand(cmdExit); timer=new Timer(); myTask=new MyTask(); timer.scheduleAtFixedRate(myTask, 2000, 5000); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(form); } public void commandAction(Command cmd, Displayable dis) { if(cmd.equals(cmdExit)){ notifyDestroyed(); try { destroyApp(false); } catch (MIDletStateChangeException e) { e.printStackTrace(); } } } class MyTask extends TimerTask{ public void run() { if(gauge1.getValue()+1 > gauge1.getMaxValue()){ timer.cancel();//terminates this timer }else{ gauge1.setValue(gauge1.getValue()+1); } } } }
这里用到了Timer和TimerTask这两个类。Timer是个定时器,主要是用来启动TimerTask,即任务器,而TimerTask主要作用是启动线程,让应用程序中的相关变量在线程中得到控制。TimerTask是个抽象类不能被直接实例化因此这里用到了MyTask这个类来继承TimerTask。
6 TextField
TextField与TextBox及其相似,只不过前者相对于属于小型文本编辑框,而且是继承自Item,它不可以独立显示在界面上,需要通过Form来添加,而TextBox是可以独立显示的。
TextField的构造方法TextField(String label, String text, int maxSize, int constrains )
package J2ME001; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class TextFieldMIDlet extends MIDlet implements CommandListener{ private Form form; private Command exitCommand=new Command("Exit",Command.EXIT,1); public TextFieldMIDlet(){ form=new Form("TextField显示"); form.setCommandListener(this); form.addCommand(exitCommand); TextField text=new TextField("任何字符","",50,TextField.ANY); form.append(text); text=new TextField("E-Mail地址","",50,TextField.EMAILADDR); form.append(text); text=new TextField("整数值","",50,TextField.NUMERIC); form.append(text); text=new TextField("电话号码","",50,TextField.PHONENUMBER); form.append(text); text=new TextField("URL网址","",50,TextField.URL); form.append(text); text=new TextField("数值小数","",50,TextField.DECIMAL); form.append(text); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(form); } public void commandAction(Command cmd, Displayable dis) { notifyDestroyed(); try { destroyApp(true); } catch (MIDletStateChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
7 ChoiceGroup
ChoiceGroup是选项组,继承了Item又实现了Choice接口,与List用法相似。区别是ChoiceGroup是显示在Form内的选项组,而List是单独显示控件。还有一点ChoiceGroup不支持Choice.IMPLICIT,而支持Choice.POPUP,而List支持前者不支持后者。
package J2ME001; import javax.microedition.lcdui.CustomItem; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Graphics; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class CustomItemMIDlet extends MIDlet { private Form form; public CustomItemMIDlet() { MyCustomItem myCustomItem=new MyCustomItem("表格"); form=new Form("学生信息"); form.append(myCustomItem); } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(form); } class MyCustomItem extends CustomItem{ public MyCustomItem(String label){ super(label); } protected int getMinContentHeight(){ return 0; } protected int getMinContentWidth() { return 0; } protected int getPrefContentHeight(int width) { return 120; } protected int getPrefContentWidth(int height) { return 221; } protected void paint(Graphics g, int w, int h) { g.setClip(0, 0, w, h); g.setColor(200); for(int i=0;i<4;i++){ g.drawLine(0, i*30, 220, i*30); } for(int i=0;i<5;i++){ g.drawLine(i*55, 0, i*55, 90); } String[] info={"姓名:","李三三","年龄:","13", "性别:","女","班级:","初二(2)班", "民族:","汉","学号:","1898993"}; for(int i=0;i<12;i++){ g.drawString(info[i], 5+(i%4)*55, 2+(i/4)*30, 0x4|0x10); } } } }
6 Alert 控件
Alert在高级图形用户界面中用来提示消息作用,如同一般应用程序中的消息提示框。Alert可以通过AlertType来向用户显示图标或者声音,让用户感触更深。
AlertType.ALARM 响铃提示
AlertType.CONFIRMATION 确认提示
AlertType.ERROR 错误提示
AlertType.INFO 信息提示
AlertType.WARNING 警告提示
此外Alert控件可以和Gauge控件结合使用来提示信息,但需遵循以下原则:
1 不可交互模式
2 不属于其他任何一个容器(如其他Alert或Form)
3 不能有任何命令
4 不可以设置ItemCommanListener
5 标签须为null
6 getPreferredWidth() 和 getPreferredHeight() 返回值都为-1
7 布局必需为LAYOUT_DEFAULT
package J2ME001; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Gauge; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class AlertMIDlet extends MIDlet implements Runnable { private Gauge gauge; private Alert alert; private long firstTime = 0L; public AlertMIDlet() { alert = new Alert("Alert Message", null, null, AlertType.WARNING); gauge = new Gauge(null, false, 5, 1); alert.setIndicator(gauge); alert.setTimeout(10000); firstTime = System.currentTimeMillis(); new Thread(this).start(); } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(alert); } public void run() { while(true){ int time=(int)(System.currentTimeMillis()-firstTime); gauge.setValue(time/1000); if(time>=alert.getTimeout()/2){ alert.setString("欢迎使用Alert信息提示!"); alert.setIndicator(null); break; } } } }
相关文章推荐
- J2ME从零开始(学习笔记4)
- J2ME从零开始(学习笔记5)
- J2ME从零开始(学习笔记10)
- J2ME从零开始(学习笔记2)
- J2ME从零开始(学习笔记6)
- J2ME从零开始(学习笔记7)
- J2ME从零开始(学习笔记3)
- J2ME从零开始(学习笔记8)
- J2ME学习笔记(七)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(十) - java基础 - 多线程(待续)
- j2me网络开发学习笔记2
- ★(转)J2ME学习笔记(七)
- J2ME 学习笔记1
- 学习笔记 从零开始学单片机(9) 串口通信
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- AJAX学习笔记--从零开始
- J2ME学习笔记(8)
- 学习笔记 从零开始学单片机(1) 建立实验环境
- J2ME学习笔记(八)-----处理MIDP RMS
- Python学习笔记01 从零开始Hello world