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