Newsgroup: it.comp.java
Titolo: 4 Linee in croce per impazzire :-)

Ciao a tutti,
sto smanettando da qualche giorno con Java e J2ME. Ho il seguente codice:

Scusate, m'è scappato l'invio! Dicevo... ;)
...sto smanettando da qualche giorno con Java e J2ME. Ho il seguente codice:
----------------------
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
class BizarreCanvas extends Canvas{
 Image splash = null;
 public void BizarreCanvas(){
 }
 protected void paint(Graphics g){
  splash = Image.createImage("/res/splash.png");
  g.drawImage(splash, 128, 96, g.TOP|g.LEFT);
 }
}
----------------------
Quando provo a compilare mi da il seguent errore indicando il punto (.) tra
Image e createImage:
----------------------
Building "Bizarre"
c:\WTK104\apps\Bizarre\src\BizarreCanvas.java:12: unreported exception
java.io.IOException; must be caught or declared to be thrown
splash = Image.createImage("/splash.png");
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
----------------------
Pensavo fosse un errore di caricamento dell'immagine, ho provato a copiarla
dappertutto ma senza risultato.
Da cosa può dipendere?
Grazie

 }
Devi gestire l'eccezione che si può verificare durante il caricamento
dell'immagine:
try {
  splash = Image.createImage("/res/splash.png");
} catch (java.io.IOException x) { }
Ciao
Marco

 } catch (java.io.IOException x) { }
Grazie 1000 Marco,
ma perchè si dovrebbe verificare l'eccezione se il file c'è? O sto dando i
numeri pure io? :)
Cmq ho provato, ora me lo compila ma nel debugger:
java.lang.NullPointerException
 at BizarreCanvas.paint(+37)
 at javax.microedition.lcdui.Display.serviceRepaints(+105)
 at javax.microedition.lcdui.Display$DisplayAccessor.timerEvent(+34)
 at com.sun.kvem.midp.lcdui.EmulEventHandler$EventLoop.run(+545)
Vorrei partire da un esempio semplice semplice per visualizzare
un'immaginetta sul cellulare! :D
saluti,

...o meglio, il drawImage era fuori dal Try, ora l'ho messo all'interno del
blocco Try e non accade nulla. Che tu sappia, le immagini vanno inserite in
un punto specifico della cartella contenente il sorgente?
scusa ancora per il disturbo e grazie per eventuali risposte
-------------------
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
class BizarreCanvas extends Canvas{
 Image splash = null;
 public void BizarreCanvas(){
 }
 protected void paint(Graphics g){
  try {
   splash = Image.createImage("/res/splash.png");
   g.drawImage(splash, 128, 96, g.TOP|g.LEFT);
  } catch (java.io.IOException x) { }
 }
}

 dappertutto ma senza risultato.
Scusa, ma se il compilatore ti da' errore
(e quindi stai solo compilando il programma,
  NON lo stai eseguendo!), tu provi a cambiare
posto ad una immagine?
Se provasti invece a leggere cosa ti dice il compilatore?
 > c:\WTK104\apps\Bizarre\src\BizarreCanvas.java:12: unreported exception
 > java.io.IOException; must be caught or declared to be thrown
 >
 > splash = Image.createImage("/splash.png");
Io leggo
   java.io.IOException; must be caught or declared to be thrown
il che vuol dire che Image.createImage puo' lanciare una eccezione
java.io.IOException e tu devi:
  - o catturarla con un try{...}catch(...){...}
  - oppure dichiarare che il tuo metodo paint la puo' generare,
    scrivendo qualcosa del tipo:
       protected void paint(Graphics g) throws java.io.IOException
Ciao
- Dario

 ma perchè si dovrebbe verificare l'eccezione se il file c'è? 
E se non ci fosse(Qualche utente burlone che lo sposta/cancella/gli cambia
nome)? che fine farebbe la tua applicazione? Essendo costretto a gestire
l'eccezione ora sei per forza conscio che qualcosa puo' non andare bene. Se
poi sei sicuro che invece sarà sempre tutto a posto puoi fare la zozzeria:
try {
...
}
catch (java.io.IOException ioex) {}
Ciao
Matteo

 ha scritto nel messaggio
news:0QTRa.94850$qa5.1...@news2.tin.it...
