Interrompendo um While infinito

8 respostas
J

Ola a todos,

Fiz um programa, que faz uma bolinha ficar batendo nos cantos de uma janela enquanto ela estiver aberta, porém não consigo fechar a janela clicando no “X”, e gostaria de saber como faço para conseguir, segue parte do código de implementação, desde já agradeço a ajuda

public static void main(String args[]) {
         Exemplo ex = new Exemplo();
         ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }

public void paint (Graphics g){
super.paint(g);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Utilzei um while infinito para mover a bolinha.
   while (true)
     {
         g.setColor(new Color(0,0,0));
         g.fillOval(x,y,10,10);
        tempo(20);

        //Em caso de Resize, a bolinha irá continuar a percorrer toda a tela
        xmax = getSize().width - 15;
        ymax = getSize().height- 15;

        g.setColor(Color.WHITE);
        g.fillOval(x,y,10,10);

        if ((x > xmax) || (x < xmin))
           incx =-incx;
        if ((y > ymax) || (y < ymin))
           incy =- incy;

        x = x + incx;
        y = y + incy;
     }
  }


   public void tempo (int m){
     try {
        Thread.sleep(m);
     }
         catch (Exception e){
        }
  }

}

8 Respostas

malucocelo

Ao invés de while (true) {

Use while (var == -1) {

Aí no evento de fechar a janela você seta o ‘var’ para um valor diferente, por exemplo 0.

Scoobydoo

break;

J

obrigado pela ajuda, mas como poderia setar este falor se o while esta ja esta sendo executado?

malucocelo

Declare o ‘var’ como uma variável global, aí teu método de fechamento da janela pode setar:

metodoDeFechamentoDaJanela(){
var = 0;
//código de fechamento da janela
}

Ao setar o valor como ‘0’ o while para sozinho.

J

Valeu pela ajuda. vou tentar fazer isso

malucocelo

Qualquer dúvida posta aí que respondo mais tarde, vlw!

rogelgarcia

Mas faz um negócio mais bacaninha...

boolean fechar = false;

fechar = true;
pedroroxd

eu utilizo

boolean flag = true; while (flag) { }
Ae quando eu quero parar eu do

flag = false;
Criado 12 de março de 2010
Ultima resposta 14 de mar. de 2010
Respostas 8
Participantes 5