Carregar imagem

Sou iniciante em J2ME e estou tentando carregar uma imagem para minha midlet e não estou conseguindo. Estou utilizando o eclipse. Tbem ja tentei compilar o codigo atraves do WTK, colocando a imagem no ‘res’ e não consegui carregar a imagem.
Se puderem me ajudar…

Meu codigo.

package ImutableImage;

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

public class ImutableImage extends MIDlet implements CommandListener{
	
	private Display display;
	private Form form;
	private Command exit;
	private Image image;
	private ImageItem imageItem;
	
	public ImutableImage(){
		display = Display.getDisplay(this);
		exit = new Command("Sair",Command.EXIT,1);
		form = new Form("Imagem imutavel");
		form.addCommand(exit);
		form.setCommandListener(this);
		try{	
			 
			image = Image.createImage("/imagem.png");
			imageItem = new ImageItem(null, image, ImageItem.LAYOUT_NEWLINE_BEFORE |
										ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_NEWLINE_AFTER,
										"minha imagem");
			form.append(imageItem);
		}catch(java.io.IOException error){
			Alert alert = new Alert("Erro", "Não foi possivel carregar a imagem",null,null);
			alert.setTimeout(Alert.FOREVER | 100);
			alert.setType(AlertType.ERROR);
			display.setCurrent(alert);
		}
	}

	protected void startApp() {
		// TODO Auto-generated method stub

	}

	protected void pauseApp() {
		// TODO Auto-generated method stub

	}

	protected void destroyApp(boolean arg0)  {
		
		// TODO Auto-generated method stub

	}
	
	public void commandAction (Command command, Displayable displayable){
		if (command == exit){
			destroyApp(true);
			notifyDestroyed();
		}
	}

}

Esse código não vai dentro do método startApp() ??

Não tenho experiência em MIDlets… É tbm uma pergunta… heheeh


Fernando Bernardino

Aconselho voce a jogar o bloco try e catch pra carregar a imagem dentro d um metodo e esse metodo voce insere na função startApp, como comentou o amigo de cima, ou simplesmente , jogar o bloco na função direto e nao dentro do construtor da midlet.
Espero q ajude

se a imagem está dentro do res, o seu caminho seria

“/res/minhaimagem.png” ou então “res/minhaimagem.png” não me lembro agora. E além disso, acho que vc deveria dar uma alterada
no seu código.

Dá uma olhada em como ele ficou agora.
Tenta compilar isso aí.

Abraço

package ImutableImage;
 
 import javax.microedition.midlet.*;
 import javax.microedition.lcdui.*;
 
 public class ImutableImage extends MIDlet implements CommandListener{
 	
 	private Display display;
 	private Form form;
 	private Command exit;
 	private Image image;
 	private ImageItem imageItem;
 	
 	public ImutableImage(){
 		display = Display.getDisplay(this);
 		exit = new Command("Sair",Command.EXIT,1);
 		form = new Form("Imagem imutavel");
 		form.addCommand(exit);
 		form.setCommandListener(this);
 	}
 
 	protected void startApp() {
 		 		try{	
 			 
 			image = Image.createImage("/res/imagem.png");
 			imageItem = new ImageItem(null, image, ImageItem.LAYOUT_NEWLINE_BEFORE |
 										ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_NEWLINE_AFTER,
 										"minha imagem");
 			form.append(imageItem);
 		}catch(java.io.IOException error){
 			Alert alert = new Alert("Erro", "Não foi possivel carregar a imagem",null,null);
 			alert.setTimeout(Alert.FOREVER | 100);
 			alert.setType(AlertType.ERROR);
 			display.setCurrent(alert);
 		}
 
 	}
 
 	protected void pauseApp() {
 		// TODO Auto-generated method stub
 
 	}
 
 	protected void destroyApp(boolean arg0)  {
 		
 		// TODO Auto-generated method stub
 
 	}
 	
 	public void commandAction (Command command, Displayable displayable){
 		if (command == exit){
 			destroyApp(true);
 			notifyDestroyed();
 		}
 	}
 
 }

esse diretorio res ele deve estar contido dentro do projeto criado no eclipse? porque eu coloquei a pasta dentro do diretorio do projeto, mas quando vou carregar a imagem não esta aparecendo.

Desde ja agradeço!

O codigo e esse ai:

[code]
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class ImagemDisplayer extends MIDlet {

Form form;
Display display;
Image imagem;
ImageItem imagemItem;

public ImagemDisplayer() {
	display = Display.getDisplay(this);
	form = new Form("Imagem Displayer");
}

protected void destroyApp(boolean b){
	

}

protected void pauseApp() {
	

}

protected void startApp()  {
	try{
		imagem = Image.createImage("/logo.png");
		imagemItem = new ImageItem("Foto",imagem,ImageItem.LAYOUT_LEFT,"Uma imagem");

form.append(imagemItem);

	}
	catch(java.io.IOException e){
		
	}
			display.setCurrent(form);

}

}[/code]

Existem duas maneira de mostrar uma imagem na tela usando J2ME

  1. Utilizando a um ImageItem, q se nao estou enganado deve ser adicionado dentro de um form.
  2. Utilizando a classe Canvas

A vantagem de utilizar o ImageItem é q a API do j2me fará scroll da image, se a imagem for maior q a tela ela criará uma barra de rolagem.

Com o canvas vc tem acesso direto a API…

Quanto ao diretorio das imagens… acho q vc tem configurar o eclipse para pegar no diretorio de resources(res). Este diretorio fica dentro da pasta de projetos. Se ele estiver configurando assim basta colocar “/XXXX.png” senao… o caminho completo.

Se quiser um exemplo me mande uma mensagem… abs

pedrorjbr

Se puder me mandar o exemplo agradeceria!

vlws

Senhores,

Muitos de vocês tem problema porquê:

1 - O ambiente de vocês está mal-configurado e o código java não acha o diretório res para as imagens

2 - o próprio path na string usada está errado

Uma rápida busca aqui no fórum revelou isto:
http://www.guj.com.br/posts/list/54323.java

Mais uma para o nosso colega Boone. Valeu garoto, tava penando aqui para carregar as imagens e o tópico q vc apontou deu certinho.