Jump to content
Nokioteca Forum

[j2me] Problema Simulazione


GuglielmoS
 Share

Recommended Posts

Ciao a tutti, è da poco che sto sperimentando il linguaggio java nell'ambito della Micro Edition e mi stanno sorgendo già dei problemi, alcuni probabiblmente stupidi, che però in parte sono riuscito a risolvere, ma altri di cui non riesco a trovare la soluzione. In particolare ora sto seguendo la guida di html.it, e l'esempio dove si utilizzano i Canvas e si mostra una stringa con il tasto premuto, non riesco a simularlo con il WTK. Vi posto il codice che teoricamente dovrebbe funzionare.

A me viene restituita un eccezione che mi dice che la classe non è una midlet(Questo lo so anche io, ma il codice è quello e sulla guida dice che funziona).

Eccezione:

Unable to create MIDlet CanvasExample
java.lang.InstantiationException: Class not a MIDlet
at com.sun.midp.midlet.MIDletState.createMIDlet(+66)
at com.sun.midp.midlet.Selector.run(+22)

Codice Sorgente:

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

public class CanvasExample extends Canvas {

private Image imgLol;
private int width;
private int height;
private String lastKeyPressed;

public CanvasExample() {
	lastKeyPressed = "Nessun tasto premuto";
	// Carico l'immagine
	try {
		imgLol = Image.createImage("/image.png");
		setFullScreenMode(true);
		width = getWidth();
		height = getHeight();
	} catch (IOException e) {
		e.printStackTrace();
	}		
}

protected void paint(Graphics g) {
	g.setColor(0x00F);
	g.fillRect(0, 0, width, height);
	if (imgLol != null) {
		g.drawImage(imgLol, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);
	}
	g.setColor(0xFFF);
	g.drawString(lastKeyPressed, width/2, height - 10, Graphics.BASELINE | Graphics.HCENTER);
}

protected void keyPressed(int arg0) {
	switch (arg0) {
	  case KEY_NUM0:
		  lastKeyPressed = "Tasto 0 premuto!";
	  break;

	  case KEY_NUM1:
		  lastKeyPressed = "Tasto 1 premuto!";
	  break;

	  case KEY_NUM2:
		  lastKeyPressed = "Tasto 2 premuto!";
	  break;

	  case KEY_NUM3:
		  lastKeyPressed = "Tasto 3 premuto!";
	  break;

	  case KEY_NUM4:
		  lastKeyPressed = "Tasto 4 premuto!";
	  break;

	  case KEY_NUM5:
		  lastKeyPressed = "Tasto 5 premuto!";
	  break;

	  case KEY_NUM6:
		  lastKeyPressed = "Tasto 6 premuto!";
	  break;

	  case KEY_NUM7:
		  lastKeyPressed = "Tasto 7 premuto!";
	  break;

	  case KEY_NUM8:
		  lastKeyPressed = "Tasto 8 premuto!";
	  break;

	  case KEY_NUM9:
		  lastKeyPressed = "Tasto 9 premuto!";
	  break;
	}
	repaint();
}	
}

Link to comment
Condividi su altri siti

Imho, la guida si e' persa qualche pezzo per strada... "inscatola" tutto in una midlet e vedrai che girera' senza problema.

OK ho proseguito "inscatolando" il tutto in una midlet, ed ora funziona. Per chi fosse interessato ecco il codice:

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

public class CanvasExample extends MIDlet {

private CanvasImage cImage;
private Display display;

public CanvasExample() {
	cImage = new CanvasImage();
	display = Display.getDisplay(this);
	display.setCurrent(cImage);
}

protected void startApp() throws MIDletStateChangeException {}
protected void pauseApp() { notifyPaused(); }
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
}

class CanvasImage extends Canvas {

private Image imgLol;
private int width;
private int height;
private String lastKeyPressed;

public CanvasImage() {
	lastKeyPressed = "Nessun tasto premuto";
	// Carico l'immagine
	try {
		imgLol = Image.createImage("/image.png");
		setFullScreenMode(true);
		width = getWidth();
		height = getHeight();
	} catch (IOException e) {
		e.printStackTrace();
	}		
}

protected void paint(Graphics g) {
	g.setColor(0x00F);
	g.fillRect(0, 0, width, height);
	if (imgLol != null) {
		g.drawImage(imgLol, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);
	}
	g.setColor(0xFFF);
	g.drawString(lastKeyPressed, width/2, height - 10, Graphics.BASELINE | Graphics.HCENTER);
}

protected void keyPressed(int arg0) {
	switch (arg0) {
	  case KEY_NUM0:
		  lastKeyPressed = "Tasto 0 premuto!";
	  break;

	  case KEY_NUM1:
		  lastKeyPressed = "Tasto 1 premuto!";
	  break;

	  case KEY_NUM2:
		  lastKeyPressed = "Tasto 2 premuto!";
	  break;

	  case KEY_NUM3:
		  lastKeyPressed = "Tasto 3 premuto!";
	  break;

	  case KEY_NUM4:
		  lastKeyPressed = "Tasto 4 premuto!";
	  break;

	  case KEY_NUM5:
		  lastKeyPressed = "Tasto 5 premuto!";
	  break;

	  case KEY_NUM6:
		  lastKeyPressed = "Tasto 6 premuto!";
	  break;

	  case KEY_NUM7:
		  lastKeyPressed = "Tasto 7 premuto!";
	  break;

	  case KEY_NUM8:
		  lastKeyPressed = "Tasto 8 premuto!";
	  break;

	  case KEY_NUM9:
		  lastKeyPressed = "Tasto 9 premuto!";
	  break;
	}
	repaint();
}	
}

Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy