Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con Thread y ActionListener

Estas en el tema de Problema con Thread y ActionListener en el foro de Java en Foros del Web. hola gracias por entrar :), el código siguiente correspondiente a un applet, que debería empezar a mostrar una pequeña expresión moviéndose por todo el applet, ...
  #1 (permalink)  
Antiguo 27/11/2010, 17:05
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Exclamación Problema con Thread y ActionListener

hola gracias por entrar :), el código siguiente correspondiente a un applet, que debería empezar a mostrar una pequeña expresión moviéndose por todo el applet, luego de oprimir el button, pero lo que hace es que la expresion empieza a mostrarse apenas se carga el applet sin necesidad de oprimir el button??????...

por fa ayudenme, ya investigue como dos dias y no pude saber por que:
Código:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;


public class JuegoCompetencia extends Applet  implements Runnable,ActionListener{
    
	 Thread expresion;
    Button calcula;
	 //para las coordenadas de la posicion de la expresion
	 int x,y;
	 //para doble buffer
	 Graphics gBuffer;
	 Image imag;
   public JuegoCompetencia()
   {
    calcula=new Button("Boton");
	 calcula.addActionListener(this);
    add(calcula);
    this.setBackground( Color.blue );
    this.setForeground( Color.white );
   }

   public void actionPerformed(ActionEvent a)
   {
       if(expresion==null)
	    {
       expresion=new Thread(this);
       expresion.start();
       }  
		
   }

//Elimina parpadeo
 public void update(Graphics g){
 
     if(gBuffer==null){
          imag=createImage(getWidth(), getHeight());
          gBuffer=imag.getGraphics();
     }
	  
	  gBuffer.setColor(getBackground());
     gBuffer.fillRect(0,0, getWidth(), getHeight());

     
     String[] nombreFuentes=getToolkit().getFontList();
	  String f=nombreFuentes[(int)(Math.random()*nombreFuentes.length-1)];
	  
     Font fuente=new Font(f, Font.BOLD,(int)((Math.random()*20)+12));
	  gBuffer.setFont(fuente);
     gBuffer.setColor(Color.white);
	  
	  x+=5;
	  y+=7;
     gBuffer.drawString("2 + 4",x,y); 

     g.drawImage(imag, 0, 0, null);

   }
   public void init()
  {
  }
   public void paint(Graphics g)
   {
   }
	
	 public void start(){
     if( expresion == null){
         expresion=new Thread(this);
         expresion.start();
     }
  }
  
   public void stop(){
     if( expresion!=null){
         expresion.stop();
         expresion=null;
     }
  }
  
   public void run() {
    long t=System.currentTimeMillis();
    while (true) {
        repaint();
        try{
            t+=80;
            Thread.sleep(Math.max(0, t-System.currentTimeMillis()));
        }catch(InterruptedException ex){
            break;
        }
    }
  }
 }
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Etiquetas: actionlistener, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.