.
初级制图 -画图ー
从本讲开始我们就要学习终端Java技术了! 终于开始学了啊。
目前为止已经学习的编程基础一定会派上用场的,尼克要加油啊。本讲我们学习在 终端上制作图画。
1. 终端Java的life cycle
通话时游戏结束的话很讨厌啊。
为了避免这种情况,在终端Java内定义了程序启动时、电话挂进来时以及程序结束 时的处理。 .
在文章开始时谈到画图,那么首先从如何启动终端Java,如何使其运行开始讲起。 这么说有电话挂进来时,程序会暂时停止是么?
是这样的。每次电话进来时程序都会中止,相反若程序仍然运行不是很麻烦么。
好方便啊。
请看下图。终端Java的life cycle如下图所示。
.
1.终端发出运行命令,调出default constructor (无自变量)。 2.调出startApp(),开始MIDlet。
3.电话等进来时,运行pasuseApp(),MIDlet停止。 4.通话结束时,再运行startApp(),且再次打开MIDlet。 5.停止MIDlet时,运行destroyApp(),MIDlet 停止。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
.
博士,这里的default constructor是什么? 这个呀。让我们用模板的source code来说明一下。
import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; /** * 程序模板 */ public class Template extends MIDlet { public Template() { private Display display; private TextBox textbox; .
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
{ }
} display = Display.getDisplay(this); textbox = new TextBox(\display.setCurrent(textbox); protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException } protected void startApp() throws MIDletStateChangeException { //从这里起以下写程序 } //从这里起以上写程序 从14行到19行存在与类名相同名称的Templete方法。这个就是constructor。
它起什么作用呢?
作成类时,写在constructor内的处理会自动运行。也就是说,constructor是进行 类的初始化的。
哦哦。可是,这个模板的constructor是做什么的呀?
噢。好问题啊,从现在起我们就开始讲解这个问题了。
.
.
2. 画图
2.1. canvas
为了在终端Java上画图,要使用Canvas类。
画面?是指上讲以前所学的显示文字,输入文字的画面么?
恩。是的。上一讲以前都是利用text box来显示文字的。另外也有选择要素的画面以及显示时钟的画面。而这一讲却要使用与以前完全不同的画面Canvas来显示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Graphics; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; /** * 制图用模板 */ public class Sample extends MIDlet { private Display display; private Canvas canvas; protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); canvas = new TempleteCanvas();//初始化Canvas 好的。画图从Canvas类开始。
尼克,你有没有注意到终端Java应用里面有许多画面?
graphic。
.
.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
} /** } display.setCurrent(canvas);//显示Canvas protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } * 模板Canvas */ class TempleteCanvas extends Canvas{ } /** * 画图方法 * 记录画图处理 */ protected void paint(Graphics g) { } //从这里起以下记录画图处理 //从这里起以上记录画图处理 .