J2ME手机程序的图片显示
我在调试一个关于在手机上显示图片的程序,分成两段:1、MainCanvas.java部分内容如下:importjava.io.IOException;importjava...
我在调试一个关于在手机上显示图片的程序,分成两段:
1、MainCanvas.java部分
内容如下:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MainCanvas extends Canvas {
public Image m_Image;
MainCanvas(){
try{
m_Image=Image.createImage("/IM.png");
}
catch(IOException e){
}
}
protected void paint(Graphics g){
g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}
}
2、MyCartoonMidlet.java部分
内容如下:
ukimport javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet() {
// TODO 自动生成构造函数存根
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
while(true){
m_MainCanvas.repaint();
}
}
}
过程是调用目录下的一个叫做 IM.PNG的文件。在调试过程中,编译器不断报Java.lang.NullPointerException 的错误。
应该怎样修改?是环境问题还是程序问题?我怀疑是图片路径问题,可是我把图片放在res下也不行,verified\classes下也不行!!!对我这样的初学者真是一个打击!求高手指点!!! 展开
1、MainCanvas.java部分
内容如下:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MainCanvas extends Canvas {
public Image m_Image;
MainCanvas(){
try{
m_Image=Image.createImage("/IM.png");
}
catch(IOException e){
}
}
protected void paint(Graphics g){
g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}
}
2、MyCartoonMidlet.java部分
内容如下:
ukimport javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet() {
// TODO 自动生成构造函数存根
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
while(true){
m_MainCanvas.repaint();
}
}
}
过程是调用目录下的一个叫做 IM.PNG的文件。在调试过程中,编译器不断报Java.lang.NullPointerException 的错误。
应该怎样修改?是环境问题还是程序问题?我怀疑是图片路径问题,可是我把图片放在res下也不行,verified\classes下也不行!!!对我这样的初学者真是一个打击!求高手指点!!! 展开
4个回答
展开全部
在你原有的基础上修改
1、MainCanvas.java部分
内容如下:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MainCanvas extends Canvas implements Runnable{
public Image m_Image;
MainCanvas(){
try{
m_Image=Image.createImage("/IM.png");
}
catch(IOException e){
}
}
protected void paint(Graphics g){
g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}
public void run(){
while(true){
repaint();
}
}
}
2、MyCartoonMidlet.java部分
内容如下:
ukimport javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet() {
// TODO 自动生成构造函数存根
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
}
}
错误的原因有两个:在入口类得构造函数里调用 此方法Display.getDisplay(this).setCurrent(m_MainCanvas);
重写的Canvas类需要实现Runnable接口
在run方法里调用repaint();
1、MainCanvas.java部分
内容如下:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MainCanvas extends Canvas implements Runnable{
public Image m_Image;
MainCanvas(){
try{
m_Image=Image.createImage("/IM.png");
}
catch(IOException e){
}
}
protected void paint(Graphics g){
g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}
public void run(){
while(true){
repaint();
}
}
}
2、MyCartoonMidlet.java部分
内容如下:
ukimport javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet() {
// TODO 自动生成构造函数存根
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
}
}
错误的原因有两个:在入口类得构造函数里调用 此方法Display.getDisplay(this).setCurrent(m_MainCanvas);
重写的Canvas类需要实现Runnable接口
在run方法里调用repaint();
更多追问追答
追问
你这个程序都无法编译通过。
追答
错误信息是什么?说得更详细点。。。
展开全部
拜托写东西要程序化
package picture;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 主类,每个工程一样,填充构造方法
* @author Administrator
*
*/
public class PictureMIDlet extends MIDlet {
public static PictureMIDlet instance;
public Display dis;
public PictureMIDlet() {
instance = this;
dis = Display.getDisplay(this);
dis.setCurrent(new MainCanvas());
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
package picture;
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* 画布显示图片测试
* @author Micheal
*
*/
public class MainCanvas extends Canvas {
private Image image;
public MainCanvas(){
try {
image= Image.createImage("/images/girl.png");
} catch (IOException e) {
e.printStackTrace();
}
}
protected void paint(Graphics g) {
g.drawImage(image, 0, 0, Graphics.TOP|Graphics.LEFT);
repaint();
}
}
package picture;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 主类,每个工程一样,填充构造方法
* @author Administrator
*
*/
public class PictureMIDlet extends MIDlet {
public static PictureMIDlet instance;
public Display dis;
public PictureMIDlet() {
instance = this;
dis = Display.getDisplay(this);
dis.setCurrent(new MainCanvas());
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
package picture;
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* 画布显示图片测试
* @author Micheal
*
*/
public class MainCanvas extends Canvas {
private Image image;
public MainCanvas(){
try {
image= Image.createImage("/images/girl.png");
} catch (IOException e) {
e.printStackTrace();
}
}
protected void paint(Graphics g) {
g.drawImage(image, 0, 0, Graphics.TOP|Graphics.LEFT);
repaint();
}
}
追问
试了你的方法以后,程序没有再报错,可是还是无法显示图片,请问图片应该放到那个目录下?(我尝试的是/res/images/girl.png,不行)。望详细点,我是菜鸟。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码我直接导入试了,是可以用的!(但是你的代码。。。就像那个repaint()的入理真的不太好!)
你可以看一下你的图片是不是创建成功!你可以在
try{
m_Image=Image.createImage("/IM.png");
}
这里进行输出一下,看一下m_Image是不是还是空的!这说明图片创建失败,应该是你图片的问题!这样,你在paint()里画图的时候就会出现空指针错(NullPointerException)。
代码可以写成:
你的代码我直接导入试了,是可以用的!(但是你的代码。。。就像那个repaint()的入理真的不太好!)
你可以看一下你的图片是不是他建成功!你修改:
try{
m_Image=Image.createImage("/IM.png");
System.out.println(m_Image);
}
然后看一下你的输出,是不是有空(Null)。这说明是你图片问题!
还有,你的图片可以这么放,没问题!
你可以看一下你的图片是不是创建成功!你可以在
try{
m_Image=Image.createImage("/IM.png");
}
这里进行输出一下,看一下m_Image是不是还是空的!这说明图片创建失败,应该是你图片的问题!这样,你在paint()里画图的时候就会出现空指针错(NullPointerException)。
代码可以写成:
你的代码我直接导入试了,是可以用的!(但是你的代码。。。就像那个repaint()的入理真的不太好!)
你可以看一下你的图片是不是他建成功!你修改:
try{
m_Image=Image.createImage("/IM.png");
System.out.println(m_Image);
}
然后看一下你的输出,是不是有空(Null)。这说明是你图片问题!
还有,你的图片可以这么放,没问题!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把res加入到项目中没有?
可以图片压进jar软件中。
压缩方法:改后缀为zip后加入
可以图片压进jar软件中。
压缩方法:改后缀为zip后加入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询