Como fiexar a jnela

3 respostas
Y

Entao pessoal
Eu estou a tentar fazer uma animaçao mas, me deparei com um problema, a minha janela nao se feixa, tudo pq eu tenho um ciclo infinito no metodo paint.Eu tentei usar o metodo repaint() e pôr o metodo repaint() no ciclo infinito, mas a animaçao nao fica como eu kero.Será que nao existe uma outra meneira de resolver esse problema??? Analisem o codigo abaixo:

import java.awt.*;
import javax.swing.*;

public class Anim extends JFrame 
{
	private int x1=0, x2=0;

	public static void main (String[] args)
	{
		
		Anim animacao = new Anim();
		
    }
	
    public Anim() 
    {
    	super( "YB_Animacao" );
    	
    	Container cont = this.getContentPane();
    	
    	cont.setBackground( Color.BLACK );
    	this.setSize( 400, 200 );
    	this.setLocationRelativeTo( null );
    	this.setResizable( false );
    	this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    	this.setVisible( true );
    	
    	
    }
    
    
    
    
    public void paint( Graphics g )
    {
    	while( true )
    	{
    		g.setColor( Color.green );
    		g.drawString( "0", x1, 100 );
    		x1++;
    		
    		if ( x1 > 20 )
    		{
    			g.setColor( Color.black );
    			g.drawString( "0", x2, 100 );
    			x2++;
    			
    			if( x2 > 400 )
    			{
    				x1=0;
    				x2=0;
    			}
    			
    		}
    		
    		try
    		{
    			Thread.sleep( 10 );
    		}
    		catch( Exception e ){}
    	}
    	
    	
    }
    
}

Eu nao consigo fazer com que a janela se feixe… :cry:

3 Respostas

S

Pois, é estranho… no teu código está tudo correcto.

S

Ah já sei onde está o teu erro. Tu crias um ciclo infinito que vai correr na thread principal, ou seja, ela nunca terá fim, a não cer que provoques uma interrupção anormal.

A solução para esse problema é definires um evento que pare o ciclo, só depois é que podes fechar a janela. Ou então criares outra thread, responsável pelo ciclo.

Y

E como eu fasso isso??? Intendo muito pouco de Threads!!!

Criado 7 de abril de 2007
Ultima resposta 8 de abr. de 2007
Respostas 3
Participantes 2