// EJEMPLO DE ANIMACION CON UN HILO Y SU CONTROL (ok)
// AHORA SI YA TIENE EL CONTROL
// x = getBounds().width
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ANIMACION_1 extends JFrame
{
NuevoHilo Movil = new NuevoHilo( "<>", Color.red );
JButton B_I_P = new JButton("INICIAR");
boolean OK = false; // Inicialmente la animaciOn estA detenida
public static void main(String R[]) { new ANIMACION_1(); }
public ANIMACION_1()
{
this.getContentPane().setLayout(null); // Contenedor nulo
this.setTitle("ANIMACION 1.0"); // Titulo de la ventana
this.setResizable(false); // No es redimensionable
this.setLocation(100, 100); // Posicion desde la esquina superior izquierda del monitor
this.setSize(new Dimension(800, 500)); // Dimensiones
add(Movil); Movil.setBounds(30, 30, 600, 300);
// Se inserta el botOn, se le pone color del fondo y color del frente (texto)
add(B_I_P); B_I_P.setBackground(Color.blue); B_I_P.setForeground(Color.yellow);
B_I_P.setBounds(60, 360, 90, 30); // Se posiciona
B_I_P.addActionListener(new Botonazo()); // Se captura el evento del ratOn sobre el botOn
setVisible(true); // 2.- Se muestra la ventana
}
protected void processWindowEvent(WindowEvent e)
{ if (e.getID() == WindowEvent.WINDOW_CLOSING) System.exit(0); }
class Botonazo implements ActionListener
{
public void actionPerformed(ActionEvent EVENTO)
{
if ( OK ) { B_I_P.setText("MOVER"); Movil.parar(); OK = false; }
else { B_I_P.setText("PARAR"); Movil.mover(); OK = true; }
}
}
}
class NuevoHilo extends JPanel implements Runnable
{
int x = 40, y = 50, N = 0;
String Figura;
boolean ciclo = true;
Color ColorFondo = null;
Thread hilo = null;
public NuevoHilo ( String Figura, Color ColorFondo )
{
hilo = new Thread(this);
this.ColorFondo = ColorFondo;
this.Figura = Figura;
hilo.start();
hilo.suspend();
}
public void run()
{
while ( ciclo )
{
if (N < 100) { x += 5; N += 1; }
else ciclo = false;
repaint();
try { hilo.sleep(50); } catch (InterruptedException e) {}
}
}
public void paint(Graphics g)
{
g.setColor(ColorFondo); g.fillRect(0, 0, 600, 300);
g.setColor(Color.white); g.drawString(Figura, x, 50);
}
void mover() { hilo.resume(); }
void parar() { hilo.suspend(); }
}