Problemas com Imagem em J2ME

9 respostas
C

Bom dia galera,
Estou desenvolvendo minha primeira aplicação para dispositivos móveis. Estou com problemas para carregar uma imagem (Estou usando o IDE NETBEANS), já dei uma pesquisada, tentei de todas as formas porém sem sucesso.
Se puderem me ajudar ficaria grato, a seguir segue o código, que por sinal não apresenta erros, mas sempre cai na excessão…

public void startApp() throws MIDletStateChangeException { System.out.println("Iniciou o programa!"); display= Display.getDisplay(this); frmCadastro= new Form("Primeira Aplicação"); display.setCurrent(frmCadastro); alert = new Alert("ERRO, ","imagem nao encontrada !!!",null,AlertType.INFO); try { img = Image.createImage("/foto.PNG"); ii_img = new ImageItem(null,img,ImageItem.LAYOUT_CENTER,null); frmCadastro.append(ii_img); }catch(IOException e) { display.setCurrent(alert); e.printStackTrace(); }

:lol:

9 Respostas

namor

Qual o erro que surge no console? a aplicação chega a rodar só que sem a imagem ou nem abre?

Já tive problemas com formats de imagens, mesmo sendo .png

C

Ele roda normal, só que entra na excessão com a mensagem de alerta

Não sei o que pode ser…

C
Ah..com relação as notificações do console:

java.io.IOException
at javax.microedition.lcdui.ImageDataFactory.createImageFromStream(), bci=8
at javax.microedition.lcdui.ImageDataFactory.createResourceImageData(), bci=45
at javax.microedition.lcdui.Image.createImage(), bci=8
at ex1.startApp(ex1.java:54)
at javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
at com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
at com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=269
at com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
at com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
at com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
at com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26

S

Mude esta parte

para:
img = Image.createImage("/foto.png");

Te aconselho também a criar uma pasta só para suas imagens, só pra organização! :slight_smile:

Flw’s

C

Já tinha tentado…Nada mudou, ainda c/ o msmo erro.
Qnto a criar uma pasta para as imagens, tb já tentei e nda…
:cry:

S

Kra eu tentei aqui e deu certo a imagem apareceu. Não deu erro.
Posta seu código completo ai

C

Então, aí está o código da minha aplicação, dá uma força ae o//

import java.io.IOException;
import java.util.Date;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;

public class ex1 extends MIDlet implements CommandListener{
    public Display display;
    public Form frmCadastro;
    public TextField tf_nome, tf_fone;
    public DateField df_datacad;
    public StringItem si_infor;
    public ChoiceGroup cg_sexo;
    public Image img;
    public ImageItem ii_img = null;
    public Ticker ticker;//Texto com movimentono fundo da tela
    public Command cm_Voltar, cm_Ajuda, cm_Novo;
    public TextBox tb_ajuda;
    public Alert alert;
    public Command add;

    public void startApp() throws MIDletStateChangeException {
    System.out.println("Iniciou o programa!");
    display= Display.getDisplay(this);
    frmCadastro= new Form("Primeira Aplicação");
    display.setCurrent(frmCadastro);
    tf_nome = new TextField("Nome:","",30,TextField.ANY);
    tf_fone = new TextField("Telefone:","",15,TextField.PHONENUMBER);
    df_datacad = new DateField("Data Cadastro:",DateField.DATE);
    df_datacad.setDate(new Date());
    cg_sexo = new ChoiceGroup("sexo:", ChoiceGroup.POPUP, new String[]{"Masculino","Feminino"},null);
    si_infor = new StringItem("Label","texto qualquer");
    ticker = new Ticker("Programa teste no celular!");
    cm_Voltar = new Command("Voltar",Command.BACK,1);
    cm_Ajuda = new Command("Ajuda",Command.ITEM,1);
    cm_Novo = new Command("Novo",Command.ITEM,2);
    tb_ajuda = new TextBox("Ajuda do Menu","Clica ai meu!", 400, TextField.ANY);
    alert = new Alert("ERRO, ","imagem nao encontrada !!!",null,AlertType.INFO);

    //Adicionando Campos no Formulário
    add= new Command("Add",Command.SCREEN,1);
frmCadastro.addCommand(add);

    frmCadastro.append(tf_nome);
    frmCadastro.append(tf_fone);
    frmCadastro.append(cg_sexo);
    frmCadastro.append(df_datacad);
    frmCadastro.append(si_infor);
    frmCadastro.setTicker(ticker);
    frmCadastro.addCommand(cm_Voltar);
    frmCadastro.addCommand(cm_Ajuda);
    frmCadastro.addCommand(cm_Novo);   
    carregarImagem();
    //fica fazendo a leitura deste método pra ver se houve algum comando
    frmCadastro.setCommandListener(this);

    }
    
    public void destroyApp(boolean unconditional) {
        System.out.println("Finalizou o programa!");
    }

    public void pauseApp() {

    }

    public void commandAction(Command c, Displayable d) {
        if (c == cm_Voltar )
    {
    destroyApp(true);
    notifyDestroyed();
    }
        else if (c == cm_Ajuda)
    {
    display.setCurrent(tb_ajuda);
    }
    }

    
    public void carregarImagem()
   {
    try
        {
        img = Image.createImage("/foto.PNG");
        ii_img = new ImageItem(null,img,ImageItem.LAYOUT_CENTER,null);
        frmCadastro.append(ii_img);
    }catch(IOException e) {
            display.setCurrent(alert);
            e.printStackTrace();
        }
    
   }


}
:-o
S

cecim
Não vi nada de errado. A unica coisa que fiz foi o que eu te disse antes trocar por ‘.png’. A unica coisa que presumo é que você não esta colocando a sua imagem na raiz, como especificou no caminho. Da uma conferida ai, é só isso.

Flw’s

C

Ok, vou dar uma conferida…
Mas acredito que a imagem esteja na pasta src do projeto…
msmo assim, vlw pela ajuda

Criado 16 de maio de 2011
Ultima resposta 17 de mai. de 2011
Respostas 9
Participantes 3