Canvas的派生类作为MIDlet内部类初始化时为何不能调用构件器?
各位高手,问题是这样的:
我的一个J2ME程序:
public class Foobar extends MIDlet {
private class MyCanvas1 extends Canvas
implements Runnable{
public void MyCanvas1() {
System.out.println("MyCanvas()");
}
//... Canvas必要方法的覆盖
}
public void startApp() throws MIDletStateChangeException {
System.out.println("Before constructing MyCanvas()");
MyCanvas1 myCanvas = new MyCanvas1();
System.out.println("After constructing MyCanvas()");
Thread thread = new Thread(myCanvas);
thread.start();
Display.getDisplay(this).setCurrent(myCanvas);
}
// ... MIDle必要方法的覆盖
}
我把Canvas做为了一个内部类的基类对待。当我执行该程序时,发现输出的debug结果如下:
Before constructing MyCanvas()
After constructing MyCanvas()
中间没有打印出MyCanvas(),所以得到结论:MyCanvas1 myCanvas = new MyCanvas1();
没有得到正常的执行。
而后我把Canvas做为外部友好类的基类提了出来:
class MyCanvas1 extends Canvas
implements Runnable{
public void MyCanvas1() {
System.out.println("MyCanvas()");
}
//... Canvas必要方法的覆盖
}
public class Foobar extends MIDlet {
public void startApp() throws MIDletStateChangeException {
System.out.println("Before constructing MyCanvas()");
MyCanvas1 myCanvas = new MyCanvas1();
System.out.println("After constructing MyCanvas()");
Thread thread = new Thread(myCanvas);
thread.start();
Display.getDisplay(this).setCurrent(myCanvas);
}
// ... MIDle必要方法的覆盖
}
再次执行程序,得到结果:
Before constructing MyCanvas()
MyCanvas()
After constructing MyCanvas()
达到了预期的目的。
请问高手,为什么第一种方案MyCanvas()没有得到运行,和作为内部类有没有关系。
我的环境是win2k + jBuilder,JDK是nokia s60 2nd ed
我的一个J2ME程序:
public class Foobar extends MIDlet {
private class MyCanvas1 extends Canvas
implements Runnable{
public void MyCanvas1() {
System.out.println("MyCanvas()");
}
//... Canvas必要方法的覆盖
}
public void startApp() throws MIDletStateChangeException {
System.out.println("Before constructing MyCanvas()");
MyCanvas1 myCanvas = new MyCanvas1();
System.out.println("After constructing MyCanvas()");
Thread thread = new Thread(myCanvas);
thread.start();
Display.getDisplay(this).setCurrent(myCanvas);
}
// ... MIDle必要方法的覆盖
}
我把Canvas做为了一个内部类的基类对待。当我执行该程序时,发现输出的debug结果如下:
Before constructing MyCanvas()
After constructing MyCanvas()
中间没有打印出MyCanvas(),所以得到结论:MyCanvas1 myCanvas = new MyCanvas1();
没有得到正常的执行。
而后我把Canvas做为外部友好类的基类提了出来:
class MyCanvas1 extends Canvas
implements Runnable{
public void MyCanvas1() {
System.out.println("MyCanvas()");
}
//... Canvas必要方法的覆盖
}
public class Foobar extends MIDlet {
public void startApp() throws MIDletStateChangeException {
System.out.println("Before constructing MyCanvas()");
MyCanvas1 myCanvas = new MyCanvas1();
System.out.println("After constructing MyCanvas()");
Thread thread = new Thread(myCanvas);
thread.start();
Display.getDisplay(this).setCurrent(myCanvas);
}
// ... MIDle必要方法的覆盖
}
再次执行程序,得到结果:
Before constructing MyCanvas()
MyCanvas()
After constructing MyCanvas()
达到了预期的目的。
请问高手,为什么第一种方案MyCanvas()没有得到运行,和作为内部类有没有关系。
我的环境是win2k + jBuilder,JDK是nokia s60 2nd ed
...全文
相关推荐
新建第一个J2me程序----低级UI绘制的Hello MIDlet
NULL 博文链接:https://logger.iteye.com/blog/869733
j2me_MIDlet_手机游戏入门开发_扫雷_1
我的Blog的文章源代码及工程<br>JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发 --扫雷(1)-不含线程<br><br>可以参看这篇文章<br>http://blog.csdn.net/kome2000/archive/2007/10/09/1817034.aspx<br>
Animated_Midlet.rar_j2me mtk_javame
javaME动画使用JavaME直接运行拷贝到C盘C:\Documents and Settings\Administrator\j2mewtk\2.5.2\apps
j2me_MIDlet_手机游戏入门开发_俄罗斯方块
j2se编写的俄罗斯方块游戏,注释详尽,代码完全公开,本例只有500行代码,1个类,学习写游戏不要错过啊! <br />这个是的移植 j2me 版本,大家可以参看这两个版本的区别!
JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1
贪吃蛇升级版本,与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动速度,简单做法就是把刷新速度提高了,每次刷新蛇要移动一个格子,出现的物品有的是增加蛇长度的,有的是减少蛇长度的。


J2ME
