Problema paint

Marta
17 de Octubre del 2003
Hola, estoy haciendo una aplicacion en la que aparace una carta por la parta de atras, al pinchar sobre ella debe hacer el efcto de que rota la carta y aparecer la otra parte de la carta, os muestro una prueba que he hecho:

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Cartas extends Applet implements MouseListener, MouseMotionListener
{
Image miFondo;
Image miTapete;
Image miTapete2;

int anchoParcial = 96;
int altoParcial = 96;

int posX = 100;
int posY = 100;


int x;

Cartas()
{
miFondo = Toolkit.getDefaultToolkit().getImage("C:/Archivos de programa/eclipse/workspace/Pearson/Fondos/002.jpg");
miTapete = Toolkit.getDefaultToolkit().getImage("C:/Archivos de programa/eclipse/workspace/Pearson/resource/" +
LeerTxt90.nombreEjercicio + "00" + ".jpg");
miTapete2 = Toolkit.getDefaultToolkit().getImage("C:/Archivos de programa/eclipse/workspace/Prueba/resource/" +
LeerTxt90.nombreEjercicio + "08a" + ".jpg");
}

public void init()
{
addMouseListener (this);
addMouseMotionListener(this);
}

public void update(Graphics g)
{
paint(g);
}

public void paint(Graphics g)
{
//System.out.println("Entra en el paint");
try
{
Thread.sleep(1);
g.drawImage(miFondo, 0, 0, 800, 600, this);
dibujarCartas(g);
}
catch(InterruptedException e)
{
System.out.println("El thread no puede ser interrumpido");
}
} // Fin Paint(Graphics g)

public void dibujarCartas(Graphics g)
{
g.drawImage(miTapete,100,100, 96,96,this);
}

public void mousePressed(MouseEvent evt)
{
Graphics g = getGraphics();
if((evt.getX() >= 100 && evt.getX() <= 196 && (evt.getY() >= 100 && evt.getY() <= 196)))
{
mostrarCarta(g);
}

}

public void mostrarCarta(Graphics g)
{

for (x = 0; x <= anchoParcial; anchoParcial = anchoParcial - 2, posX++)
{
for (int x = 0; x < 1000000; x++){}
g.drawImage(miTapete,
posX,
posY,
anchoParcial,
altoParcial,
this);
}
for (x = 96; anchoParcial <= x; anchoParcial = anchoParcial + 2, posX--)
{
for(int y = 0; y < 1000000; y++){}

g.drawImage(miTapete2,
posX,
posY,
anchoParcial,
altoParcial,
this);
}


}

// No estamos usando los otros eventos del mouse.
public void mouseClicked (MouseEvent evt){}
public void mouseExited (MouseEvent evt){}
public void mouseEntered(MouseEvent evt){}
public void mouseReleased(MouseEvent evt){}
public void mouseDragged(MouseEvent evt){}
public void mouseMoved (MouseEvent evt){}
}// Fin de la clase

El problema con el que me encuentro es que al pulsar la primera vez sobre la carta ejecuto el método mousePressed que llama al método mostrarCarta(Graphics g), bueno, pues no se porque extraña razón la primera que pulso sobre la carta va al método paint y como este es el que redibuja la parte de atras de la carta me la tapa, el caso es que desde la segunda vez que pincho en adelante lo hace bien.
Si alguien pudiera ayudarme estaría muy, pero que muy agradecida, de verdad.
Gracias por vuestro tiempo.

Marcos
17 de Octubre del 2003
Ni arrepentido no hostias, vete a fregar.