刚从j2sd转来j2me,小问题请教各位,望不吝赐教。谢谢

foryouever 2004-12-24 08:23:28
做了个小程序测试手机按键,奇怪为什么update的清屏功能并没有执行,显示的信息逐个重叠。

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public class keytest extends Canvas {

/**
* Constructor for keytest
*/
String aMessage = "[请按键]";


protected keytest() {
super();
}

/**
* @see Canvas#paint(Graphics)
*/
protected void paint(Graphics g) {

g.drawString(aMessage,10,50,Graphics.TOP|Graphics.LEFT);

}
protected void keyPressed(int keyCode) {

aMessage = getKeyName(keyCode);
aMessage = "数字"+aMessage+"已被按下";
repaint();

}

}
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
foryouever 2004-12-25
  • 打赏
  • 举报
回复
难道j2me和j2sd中定义的repaint()方法作用不一致?j2sd中确实是调用repaint()后,系统会首先调用update(),然后再调用paint(),前者的作用就包括清屏,后者进行重画。

期望解答。
foryouever 2004-12-25
  • 打赏
  • 举报
回复
看来是了,查了一下api文档,j2me的Canvas类中没有定义update方法,这点确实与j2sd中不同。
结贴!
ydslash 2004-12-25
  • 打赏
  • 举报
回复
update是什么?midp里面应该没有。
zyg158 2004-12-24
  • 打赏
  • 举报
回复
repaint() 只是再画一次,而不是清空以前的,你需要自己清空

用画矩形的函数就行(fillRect)
foryouever 2004-12-24
  • 打赏
  • 举报
回复
楼上兄弟,人为调用repaint()后,系统会首先调用update(),然后再调用paint(),前者的作用就包括清屏,而后者才是重画。并且这两个方法不可一被程序直接调用,必须通过repaint()调用。
贝壳鱼 2004-12-24
  • 打赏
  • 举报
回复
晕,没写完就发出去了,,再加个{}


repaint() 只是再画一次,而不是清空以前的,你需要自己清空
贝壳鱼 2004-12-24
  • 打赏
  • 举报
回复
public void clear(Graphics g)


g.setColor(255,255,255);
g.fillRect(0,0,getHeight(),getWidth());
foryouever 2004-12-24
  • 打赏
  • 举报
回复
其实就是奇怪最后的repaint()方法为什么没有起到清屏的作用。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧