日期:2014-05-20 浏览次数:20647 次
学习J2ME已经有几天的时间了,今天我以一个初学者的角度来谈谈如何学习J2ME 记得我第一次看J2ME的书时间是在我要去应聘xxx公司的J2ME开发工程师职位的前一天,那天为了面试的需要我准备了一天的时间,对于一个J2ME的菜鸟都还算上的我可想而之在短短的一天时间能准备成什么样子,我们知道一门语言要入门是得有一个过程的,这个过程至少要有4天的时间,何况面对的大家公认很难的J2ME,有的人编代码编了一辈子也许都没有机会接触到它,记得当时我根据招聘信息上面的要求,强行自己记忆了一些知识点,可是还没有到了面试时忘记得一干二尽,当时恨自己不成钢,幸亏笔记的时候大部分是Java基础知识,J2ME的知识都是些选择题,也许是这些选择题我大部分都选择对了,因为后来听说我的笔试分数还很高哦。 import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox; ? public class HelloWorld extends MIDlet { private Display displayable; private TextBox nameTextBox; public HelloWorld() { displayable = Display.getDisplay(this); } ? protected void startApp() throws MIDletStateChangeException { nameTextBox = new TextBox("", "Hello World", 20, 1); displayable.setCurrent(nameTextBox); } ? protected void pauseApp() { } ? protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } } 在看了上面的最简单的HelloWorld程序要弄懂的类:Display、TextBox、MIDlet,通过这个例子要对里面涉及到每个类的具体用法有很清楚的理解,这样的要求在刚学习J2ME的时候肯定会感觉到很类,但这是一个良好的习惯,这样坚持下来在写其他的代码不久就得心应手了。下面再在上面的例子的基础上添加一个退出菜单,只需要让上面的类实现CommandListener接口就行了。 import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.Displayable; ? public class HelloWorld extends MIDlet implements CommandListener { private Display displayable; private TextBox nameTextBox; private Command exitCommand; public HelloWorld() { displayable = Display.getDisplay(this); } ? protected void startApp() throws MIDletStateChangeException { nameTextBox = new TextBox("", "Hello World", 20, 1); exitCommand = new Command("退出", Command.EXIT, 1); nameTextBox.addCommand(exitCommand); nameTextBox.setCommandListener(this); displayable.setCurrent(nameTextBox); } ? protected void pauseApp() { } ? protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } ? public void commandAction(Command command, Displayable displayable) { if (command == exitCommand) { try { destroyApp(false); } catch (MIDletStateChangeException e) { e.printStackTrace(); } notifyDestroyed(); } } } 通过上面的例子又要查看J2ME的API了,看看CommandListener接口定义的方法,这又涉及到接口的知识了,实现一个接口就必须实现该接口的所有方法,而且访问权限限制修饰符必须是public修饰。 |