在Java J2ME中加载图像

Sop*_*lin 4 java midp lcdui java-me

我在使用java 2ME加载图像时遇到问题.我在位置驱动器"C:"中有一个图像文件"picture.png".在那之后,我写了这样来显示这个位置的图像.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;

public class ImageMidlet extends MIDlet implements CommandListener{
    private Display display;
    private Command exitCommand;
    private Command backCommand;
    private Command okCommand;
    private Form form;

    private ImageItem imageItem;
    private Image image;

    public ImageMidlet(){
        display = Display.getDisplay(this);
        form=new Form("");
        exitCommand = new Command("Exit", Command.EXIT, 1);
        backCommand = new Command("Back", Command.BACK, 2);
        okCommand = new Command("OK", Command.OK, 3);

        try {
            image=Image.createImage("/picture.png");
            imageItem=new ImageItem(null,image,ImageItem.LAYOUT_NEWLINE_BEFORE,"");
        }
        catch(IOException ex){

        }
        form.append(imageItem);
        form.addCommand(okCommand);
        form.addCommand(exitCommand);
        form.addCommand(backCommand);
        form.setCommandListener(this);

        display.setCurrent(form);

    }

    public void commandAction(Command c,Displayable d){

    }

    public void startApp() {
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}
Run Code Online (Sandbox Code Playgroud)

它向我显示了这个错误:

Unable to create MIDlet Test.ImageMidlet
java.lang.NullPointerException
     at javax.microedition.lcdui.Form.append(Form.java:638)
     at Test.ImageMidlet.<init>(ImageMidlet.java:39)
     at java.lang.Class.runCustomCode(+0)
     at com.sun.midp.midlet.MIDletState.createMIDlet(+34)
     at com.sun.midp.midlet.Selector.run(Selector.java:151)
Run Code Online (Sandbox Code Playgroud)

我开始学习开发,所以请指导这样做.

mse*_*ell 6

Image.createImage(String name)将给定图像作为资源加载.资源加载了Class.getResourceAsStream(name),它从类路径中查找资源,而不是从文件系统根目录中查找资源.

您应该将图像文件放在类路径中,这通常是最终的应用程序.jar文件.通常在项目下创建名为resourcesres的文件夹,放置图像.然后将此文件夹的内容复制到.jar文件中.在开发阶段,您应该能够使用命令行参数(Java SE中的java -cp资源)或类似的IDE设置将资源文件夹附加到类路径.

如果您真的对从实际文件系统加载图像感兴趣,可以使用可选的FileConnection API(http://developers.sun.com/mobility/apis/articles/fileconnection/).但该手机对该API的支持有限.对于静态图像,类路径是要走的路.