CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2ME

初学j2me,请帮我看看这个小程序

楼主foxman(行者)2005-07-28 14:33:43 在 Java / 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

相关问题

  • 初学者,一个小程序
  • 初学者问题,小程序出错,请问…
  • 初学者的小程序问题,帮忙看看
  • 开源发布一个小程序,供初学者学习。
  • 帮初学者看个小程序,谢谢热心人
  • 我有个小程序有个地方不理解,初学者,请多指教!
  • 初学JAVA,麻烦我帮看看这个小程序错在什么地方?
  • 初学者的小程序显示不出来,谁帮我看一下
  • 初学C++,不会windows编程,求个小程序,用于学习,谢谢
  • 初学者编了一个测试小程序,错误n多,求救!!!

关键词

  • j2me
  • sleep
  • start
  • mycanvas
  • repaint
  • 调用
  • mytest
  • microedition
  • paint
  • lcdui

得分解答快速导航

  • 帖主:foxman
  • mituzhishi
  • xueyong1203
  • homesos
  • homesos

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo