日期:2014-05-20  浏览次数:20845 次

求助:MIDP运行错误
我是一大一菜鸟,在初学J2ME MIDP时按照书中步骤编了一个低级绘图的MIDP,程序如下 
import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 

public class DrawTest extends MIDlet{ 
public DrawTest(){ 
Display.getDisplay(this).setCurrent(new DrawCanvas()); 

protected void startApp() throws MIDletStateChangeException{} 
protected void pauseApp(){} 
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException{} 


另外一个类: 
import javax.microedition.lcdui.*; 
class DrawCanvas extends Canvas{ 
private Image img; 
DrawCanvas(){ 
try{ 
img = Image.createImage("/mi.png"); 
}catch(java.io.IOException e){} 

protected void paint(Graphics g){ 
g.setColor(0x000066ff); 
g.fillRect(0,0,getWidth(),getHeight()); 
g.drawImage(img,0,0,Graphics.TOP|Graphics.LEFT); 
g.setColor(0x00000000); 
g.drawLine(40,10,90,10); 
g.setStrokeStyle(Graphics.DOTTED); 
g.drawLine(40,20,90,20); 
g.setStrokeStyle(Graphics.SOLID); 
g.drawString("Hello!",10,30,Graphics.TOP|Graphics.LEFT); 
g.drawRect(10,55,20,15); 
g.fillRect(50,55,20,15); 
g.drawRoundRect(10,75,20,20,7,7); 
g.fillRoundRect(50,75,20,20,7,7); 
g.drawArc(10,100,15,15,0,300); 
g.fillArc(50,100,15,15,0,300); 



这两个文件都按要求保存到相应src文件夹下了! 

可是运行时候并没有出现书中描绘的那图形! 
哪位大侠知道是为什么吗? 
小弟先行谢过了啊! 



------解决方案--------------------
把Display.getDisplay(this).setCurrent(new DrawCanvas());写到protected void startApp() throws MIDletStateChangeException{} 里面试试

------解决方案--------------------
首先你确定下,模拟器有没有报错?
强烈怀疑是图片出错,导致绘制图片及其后的线条绘制都没有执行到
图片绘制前的背景填充没问题
------解决方案--------------------
老兄,这种问题你不要急。
最笨也是最实用的调试方法,是在你的代码中插入System.out.println("标记");
插入到你的paint函数中,因为你说改变颜色可以有反应,说明第一句能过。你就看看自己程序怎么执行的。你会看console的输出信息么,没准已经告诉你错在哪儿了。

其实,画不出来图像时,最先应该检查clip,但我看你并没有设置clip。所以,你还是多调调吧。这种问题很基础的。