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;
}
}
}
}