Interrupção de repetições

6 respostas
C

Olá, gostaria de saber uma forma de interromper a execução de uma repetição durante sua execução, de forma que eu possuo uma tela com três botões, sendo que um destes possui uma repetição e o outro eu gostaria que cancelasse a execução do primeiro, mas o primeiro permanece travado até o final do lop. Como eu faço para resolver isso?

Desde já obrigado pela colaboraçõa para o desenvolvimento de minha aplicação.

6 Respostas

vinihds

nao presta atenção na aula nao chico

C

ve se n enche vinicius o assunt é sério!!!

cassio

Vc pode usar uma variável boolean, enquanto ela for verdadeira o laço continua executando… O botão que pára a execução simplesmente faz com que o valor desta variável seja false…

tipo

boolean continua = true;
...
for(int i = 0; i < max, continua; i++){
   //seu código
}

E o botão faria isso:

continua = false;

Se fosse um laço while

boolean continua = true;

while(qualquercoisa && continua){
  //seu código
}

e a açao do botão parar ficaria a mesma…

Falou!

C

Caro cassio, acho q vc n compreendeu minha dúvida, por isso vou explicar novamente.

Tenho uma tela em java swing, e ela possui 2 botões, quando eu pressiono o iniciar, ele entra em uma repetição, e fica travado na repetição e eu n consigo pressionar outo botão, sendo que eu quero conseguir pressionar o cancelar, sendo necessário a minha aplicação executar o cancelar durante a execução da repetição.

_fs

Execute a ação do botão em uma thread

private void iniciaAcao() {
    new Thread( new Runnable() {
        public void run() {
            // adicione o código do cassio
        }
    } ).start();
}

Existem outras formas de trabalhar com Threads e Swing caso enfrente problemas. Google :smiley:

cassio

Ahhhhhhhhhh!!!

Entendi! A interface trava!

Amigo, dá uma olhada na classe SwingWorker, procura no site da sun que tem :slight_smile:
ela cria uma Thread dedicada para execução destas atividades “longas” (como o seu laço, provavelmente), e deixa a interface funcional :stuck_out_tongue:

Vc implementa uma interface lá, põe a parte pesada dentro de um método e tá pronto, é fácil! Tive que fazer isso semana passada! Achei a solução através de ajuda aqui no GUJ! eheheh

Abraço!

Criado 2 de agosto de 2006
Ultima resposta 2 de ago. de 2006
Respostas 6
Participantes 4