este código deve realizar o seguinte: o usuário a cada pressionar de enter faz com que o programa pegue as coordenadas do ponto onde ele posicionou o cursor, que no caso é uma figura quadrado que pode ser movimentado pelas teclas de movimentação do teclado, essas coordenadas serão armazenadas num array um p/ x e outro p/ y ao final de quatro pressionamentos de enter do usuário os pontos pressionados serão ligados dando origem a um quadrilátero, eu gostaria que alguém compilasse esse código pq quando tento executar ele dá erro na classe desenhaQuadrado,valew…
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import java.util.Vector.;
import javax.microedition.lcdui.;
public class desenhaQuadrado extends MIDlet implements CommandListener{
display tela;
command Exit;
public desenhaQuadrado() {
this.tela = Display.getdisplay(display);
this.Exit = new Command("Exit",Command.Exit,0);
//iniciando a canvas
this.canvas = new quadradoCanvas;
//adiciona o exit ao canvas
this.canvas.addCommand(this.Exit);
//prepara o canvas para escutar
this.canvas.setCommandListener(this);
}
protected void startApp() {
//define a tela para que o objeto da quadradoCanvas possa desenhar na tela
this.tela.setcurrent(this.canvas);
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void destroyApp(boolean unconditional) {
// TODO Auto-generated method stub
}
public void exitMIDlet()
{
destroyApp(true);
notifyDestroyed();
}
}
//desenha o objeto quadrado para que o mesmo possa ser movimentado
//pela tela
class quadradoCanvas extends Canvas
{
public quadradoCanvas()
{
}
public void paint(Graphics g)
{
g.fillRect(1, 1, 4, 4);
g.setColor(0, 0, 255);
}
}
class movimento extends Canvas
{
int constante = 2;
int indiceQuadradoX = 1;//coordenada em x de inicialização do objeto
int indiceQuadradoY = 1;//coordenada em y de inicialização do objeto
int tamTelaX = 40; //tamanho da tela espaço no qual o objeto pode locomover-se
int tamTelaY = 40;
d = new desenho;
public movimento()
{
}
//faz o tratamento de eventos de tecla
protected void keyPressed(int tecla)
{
if( (tecla == getKeyCode(RIGHT) ) && (indiceQuadradoX < tamTelaX) )
indiceQuadradoX = indiceQuadradoX + constante;
else if( (tecla == getKeyCode(LEFT) && (indiceQuadradoX > 0) )
indiceQuadradoX = indiceQuadradoX - constante;
else if( (tecla == getKeyCode(DOWN) ) && (indiceQuadradoY < tamTelaY) )
indiceQuadradoY = indiceQuadradoY + constante;
else if( (tecla == getKeyCode(UP) ) && (indiceQuadradoY>0) )
indiceQuadradoY = indiceQuadradoY - constante;
else if( (tecla == getKeyCode(VK_ENTER) ) )//n tem vK_enter em j2me
{
varre();
}
repaint();
}
}
public class Ponto extends Canvas
{
int i = 0;
int posX;
int posY;
private quadradoCanvas qc; //instancia da classe desenhaQuadrado
Ponto()
{
}
public paint( Graphics g)
{
//pega as corrdenadas do ponto
posX = qc.getx();
posY = qc.gety();
//desenha o ponto
g.fillRect(posX, posY, 0, 0);
g.setColor(0, 255, 0);
}
}
public class varre extends Vector
{
private quadradoCanvas qc;
private Ponto p;
int arrayX[] = new int [4];
int arrayY[] = new int [4];
int i;
int j;
int k;
int pos1X;
int pos2X;
int pos1Y;
int pos2Y;
public varre(){
//o laço procura os pontos existentes na tela e armazena-os no vetor
for(i = 0; i< 40; i++){
for(j = 0; j< 40; j++){
//n sei se pode detectar o ponto dessa forma
if(p){
arrayX[j] = qc.getx();
arrayY[i] = qc.gety();
}
}
}
}
public desenha(Graphics g){
//desenha a linha que liga o primeiro ponto do array ao segundo,
//a que liga do segundo ao terceiro e deste ao quarto.
for(k = 0; k < 4; k++){
pos1X = arrayX[k];
pos2X = arrayX[k + 1];
pos1Y = arrayY[k];
pos2Y = arrayY[k + 1];
g.drawLine(pos1X, pos1Y, pos2X, pos2Y);
}
//aqui faz-se o fechamento ligando o quarto ponto do array ao primeiro.
for(k = 0; k < 4; k++){
if(k == 0){
pos1X = arrayX[0];
pos1Y = arrayY[0];
}
else if(k == 3){
pos2X = arrayX[3];
pos2Y = arrayY[3];
}
g.drawLine(pos1X, pos1Y, pos2X, pos2Y);
}
}
}