初学j2me,请帮我看看这个小程序
共两个文件:MyTest.java 和MyCanvas.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MyTest extends MIDlet
{
private Display display;
public MyTest()
{
}
public void startApp()
{
display=Display.getDisplay(this);
MyCanvas mycanvas=new MyCanvas();
mycanvas.start();
display.setCurrent(mycanvas);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
}
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class MyCanvas extends GameCanvas implements Runnable
{
int time=5;
public MyCanvas()
{
super( false);
}
public void run()
{
while (time>0)
{
try
{
time--;
Thread.sleep(1000);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public void start()
{
Thread t=new Thread(this);
t.start();
}
public void paint(Graphics g)
{
int color=g.getColor();
g.setColor(0xff00ff);
g.fillRect(0,0,this.getWidth(),this.getHeight());
g.setColor(color);
g.drawString("这是一个测试",this.getWidth()/2,this.getHeight()/4,Graphics.HCENTER|Graphics.BOTTOM);
if (time==0)
g.drawString("结束",this.getWidth()/2,this.getHeight()/2,Graphics.HCENTER|Graphics.BOTTOM);
else
g.drawString("现在是:"+time,this.getWidth()/2,this.getHeight()/2,Graphics.HCENTER|Graphics.BOTTOM);
}
}
我想实现一个很简单的功能
一开始屏幕显示“现在是:5”,一秒钟后显示“现在是:4”,然后依次是“现在是:3”,“现在是2”,“现在是:1”,最后显示“结束”
可现在不会随时间改变,我不知道哪里的问题,请高手帮助
,
问题点数:20、回复次数:9Top
1 楼mituzhishi(慎独)回复于 2005-07-28 14:51:31 得分 5
time--; 之后调用一下 repaint();
呵呵,我也是初学j2me.Top
2 楼homesos(熊猫贩子)回复于 2005-07-28 15:02:34 得分 0
楼上说的对
但不知Thread.sleep(1000);是否有效Top
3 楼xueyong1203(二当家的)回复于 2005-07-28 15:08:48 得分 5
rePaint() 加在Thread.sleep()前即可Top
4 楼foxman(行者)回复于 2005-07-28 15:13:29 得分 0
repaint()里的代码怎么处理啊?Top
5 楼homesos(熊猫贩子)回复于 2005-07-28 15:15:22 得分 5
time--;
Thread.sleep(1000);
-----------------------
time--;
repaint();
Thread.sleep(1000);
-----------------------------------------------
但只在MIDP2.0中是运行正确的,看来MIDP2.0的确不错。可以省好多麻烦
Top
6 楼homesos(熊猫贩子)回复于 2005-07-28 15:16:05 得分 5
repaint() 会调用 paint() 进行处理
这个楼主不用担心,是系统调用的。Top
7 楼foxman(行者)回复于 2005-07-28 15:17:51 得分 0
Canvas的paint()方法,是负责绘制屏幕上的画面,每当屏幕需要重新绘制时,就会产生重绘事件时,系统就会自动调用paint(),并传入一个Graphics对象。
是不是这样的?
Top
8 楼foxman(行者)回复于 2005-07-28 15:21:59 得分 0
time--;
repaint();
Thread.sleep(1000);
这样修改过后可以实现预期的功能了,谢谢各位热心的高手!Top
9 楼mituzhishi(慎独)回复于 2005-07-28 15:34:22 得分 0
呵呵,共同进步.Top




