Olá pessoal!
Tenho essas duas classes:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class ListaMIDlet extends MIDlet implements CommandListener {
private Display display = null;
private List lsMain; // Uma lista para selecionar ítens.
private Command cmExit, cmEscolher;
public ListaMIDlet() {
// Comando para sair da MIDlet
cmExit = new Command("Exit", Command.SCREEN, 0);
// Comando para escolher ítens
cmEscolher = new Command("Escolher", Command.ITEM, 1);
// Cria um objeto lista e adiciona dois ítens
lsMain = new List("List", Choice.IMPLICIT);
//Adiciona os ítens na lista
lsMain.append("Coffee Beans", null);
lsMain.append("Chocolate", null);
// Adiciona os comandos de ação
lsMain.addCommand(cmExit);
lsMain.addCommand(cmEscolher);
// listener(ouvinte) de evento
lsMain.setCommandListener(this);
}
// Called by application manager to start the MIDlet.
public void startApp() {
if (display == null)
display = Display.getDisplay(this);
display.setCurrent(lsMain);
}
// A required method
public void pauseApp() {
}
// A required method
public void destroyApp(boolean unconditional) {
}
// Check to see if our Exit command was selected
public void commandAction(Command c, Displayable s) {
if (c == cmExit) {
destroyApp(false);
notifyDestroyed();
}
if (c == cmEscolher) {
// String selecionado = lsMain.getString(lsMain.getSelectedIndex());
// lsMain.append("Escolheu "+selecionado, null);
PrimeiraCanvas primeiraCanvas = new PrimeiraCanvas();
primeiraCanvas.addCommand(cmExit);
primeiraCanvas.addCommand(cmEscolher);
primeiraCanvas.setCommandListener(this);
display.setCurrent(primeiraCanvas);
}
}
}
e
import javax.microedition.lcdui.*;
//classe criada extendendo de Canvas
class PrimeiraCanvas extends Canvas {
public PrimeiraCanvas() {
}
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
// Preenche o plano de fundo de preto
g.setColor(0);
g.fillRect(0, 0, width, height);
// Desenha um linha horizontal branca
g.setColor(0xFFFFFF);
g.drawLine(0, height / 2, width - 1, height / 2);
// Desenha um linha horizontal amarela pontilhada
g.setStrokeStyle(Graphics.DOTTED);
g.setColor(0xFFFF00);
g.drawLine(0, height / 4, width - 1, height / 4);
// Desenha um linha diagonal cinza
g.setGrayScale(255);
g.setStrokeStyle(Graphics.SOLID);
g.drawLine(0, 0, width - 1, height - 1);
}
}
Enfim, minha questão é:
Quem chama o método paint? Daonde vem esse parametro Graphics g?? Quem instancia esse objeto… está claro q é na classe que “PrimeiraCanvas” herda, mas como isso acontece??
Grato!!