ورود

View Full Version : اضافه کردن تصویر به برنامه



hesamy2004
جمعه 16 مهر 1389, 14:40 عصر
دوستان من یه برنامه نوشتم میخوام تو یه صفحه یه عکس رو نشون بدم ولی تصویر رو چه تو پوشه src میزارم و چه تو پوشه res، وقتی بر روی Lunch کلیک میکنم کلی استثنا میده. برنامه رو ببینین و در صورت امکان بهم بگید مشکل چیه.

فایل میدلت اینه:


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

public class ImmutableImage extends MIDlet
{
private Display display;
private ImageCanvas canvas;

public ImmutableImage()
{
display = Display.getDisplay(this);
canvas = new ImageCanvas(this);
}
public void startApp()
{
display.setCurrent(canvas);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void exitMidlet()
{
destroyApp(true);
notifyDestroyed();
}
}



اینم فایل اجرایی:


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

public class ImageCanvas extends Canvas implements CommandListener
{
private Command cmExit;
private ImmutableImage midlet;
private Image im = null;

public ImageCanvas(ImmutableImage midlet)
{
this.midlet = midlet;

cmExit = new Command("Exit", Command.EXIT, 1);
addCommand(cmExit);
setCommandListener(this);

try
{
im = Image.createImage("/image.png");
}
catch(java.io.IOException e)
{
System.err.println("Unable to locate or read image file.");
}
}

protected void paint(Graphics g)
{
if(im != null)
g.drawImage(im, 10, 10, Graphics.HCENTER);
}

public void commandAction(Command c, Displayable d)
{
if(c == cmExit)
midlet.exitMidlet();
}

}



پیغام خطا:


Starting emulator in execution mode
Running with storage root C:\Users\Hesam\j2mewtk\2.5.2\appdb\DefaultColorPho ne
Running with locale: English_United States.1252
Running in the identified_third_party security domain
java.lang.IllegalArgumentException:
at ImageCanvas.paint(ImageCanvas.java:32)
at javax.microedition.lcdui.Canvas.callPaint(Canvas.j ava:1074)
at javax.microedition.lcdui.Display.repaint(Display.j ava:1566)
at javax.microedition.lcdui.Display.registerNewCurren t(Display.java:1872)
at javax.microedition.lcdui.Display.access$700(Displa y.java:221)
at javax.microedition.lcdui.Display$DisplayAccessor.f oregroundNotify(Display.java:2344)
at javax.microedition.lcdui.Display$DisplayManagerImp l.notifyWantsForeground(Display.java:3126)
at javax.microedition.lcdui.Display$DisplayManagerImp l.access$100(Display.java:2565)
at javax.microedition.lcdui.Display.setCurrent(Displa y.java:843)
at ImmutableImage.startApp(ImmutableImage.java:16)
at javax.microedition.midlet.MIDletProxy.startApp(MID letProxy.java:43)
at com.sun.midp.midlet.Scheduler.schedule(Scheduler.j ava:374)
at com.sun.midp.main.Main.runLocalClass(Main.java:466 )
at com.sun.midp.main.Main.main(Main.java:120)

hesamy2004
جمعه 16 مهر 1389, 15:36 عصر
خدا رو شکر مشکل حل شد.


g.drawImage(im, 10, 10, Graphics.HCENTER);

رو به


g.drawImage(im, 10, 50, Graphics.TOP | Graphics.LEFT); تغییر دادم.

البته تصاویر رو از تو فلدر سورس برنامه ریختم. نمیدونم چرا از تو res اونها رو نمیخونه؟!!!