Quem chama paint(Graphics g)?

0 respostas
R

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!!

Criado 6 de junho de 2006
Respostas 0
Participantes 1