Estou desenhando um drawPolygon, fiz varios desenhos e gostaria que ao executar o programa, cada desenho aparecer um apos o outro.
Para isso eu coloquei Thread.sleep(100), quando eu uso um frame da certo, mas quando eu uso um JPainel não da!!!
Ja tentei o metodo repaint() , fiz de tudo, mas não consegui fazer com que apareça o desenho de acordo com o tempo que eu coloquei no sleep.
Como eu faço?
Logo abaixo o codigo.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PoligonosTranslacao extends JPanel{
public PoligonosTranslacao()
{
setBackground( Color.WHITE );
}
public void paint( Graphics g )
{
g.setColor( Color.BLUE );
int VertX[] = {50,150,150,100,50};
int VertY[] = {50,50,150,200,150};
int nVert = 5;
Polygon p1 = new Polygon(VertX,VertY,nVert);
g.drawPolygon(p1);
//fazer um metodo!.
for(int i=0; i < 3 ; i++)
{
translacao(p1,i+30,i-16);
try
{
Thread.sleep(100);
}
catch (Exception e){}
g.setColor(Color.BLACK);
g.drawPolygon(p1);
}
}
public void translacao(Polygon p , int dx, int dy)
{
for(int i = 0; i < p.npoints;i++)
{
p.xpoints[i]+=dx;
p.ypoints[i]+=dy;
}
}
/* Fatores de translação Dx e Dy, descolamento na vertical e horizontal.
*
* Para cada vertice => valor atual + Dx .
* x' = x + Dx
* y' = y + Dy
* Valores positivos afastam da origem.
* O y começa de cima ponto (0,0) no canto esquerdo.
*
* Dx negativo -> esquerta
* Dy negativo => sobe
*
**/
public static void main(String[] args)
{
PoligonosTranslacao panel = new PoligonosTranslacao();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE );
frame.getContentPane().add( panel );
frame.setSize( 400, 400 );
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension windowSize = frame.getSize();
frame.setLocation(
(int) ((screenSize.getWidth() - windowSize.getWidth()) / 2),
(int) ((screenSize.getHeight() - windowSize.getHeight()) / 2));
frame.setVisible( true );
frame.setResizable( false );
}
}