Duvida basica de como trabalhar com loop

Eu estou comecando a tabalhar com GUIs , eu ja consigo montar uma tela e posicionar tudo bunitinho mas mas tenho uma duvida em questao da programacao. O meu programa tem botoes ON e OFF. E caso voce aperte o botao ON ele ira ficar rodando uma rotina a cada 4 segundos e se apertar o botao OFF ele para de rodar tal rotina. Eu nao entendo exatamente onde eu vou colocar esse loop que o meu programa ira ficar rodando, por que com o botao eu imagino que eu so va transformar uma variavel static de false para true ou 0 para 1, mas exatamente onde eu coloco a a minha linha de codigo e onde vai o loop? Nao sei se ficou claro o que eu quero fazer , qualquer coisa eh so perguntar.

Por mim você é doido

Acredito que seu loop ficará no tratamento do evento do botão…por exemplo, a clicar no botão você gera um ActionEvent, então acho que você deve fazer algo assim

[code]

//Método ouvinte do botão que liga
public void actionPerformed(ActionEvent event){

aconteceAcao();

}

//Método ouvinte que faz com que a ação termine
public void actionPerformed(ActionEvent event){

paraAcao();

}

public void aconteceAcao(){

//aqui voce coloca o código onde entra o loop

}

public void paraAcao(){

//aqui você coloca o código que faz a açao parar

}[/code]

Não sei direito se era essa sua dúvida, mas espero ter ajudado. Abraços!

Nao peguei a ideia… haha e nao sou louco haha. O que eu quero eh por exemplo colocar algo do tipo no codigo:


//...

Thread t = new Thread();

While (1) {

// CODIGO

if (ON == 1){

/* MEU CODIGO */

}
t.sleep(4000);

}

Eu nao sei se voce pegou a ideia… mas onde exatamente eu devo posicionar isso? Dentro do Main? Eh desse modo que se faz um ON e OFF um programa que ira ficar rodando?

VLew!!

Ta ai cara…
Foi bom fazer isso, nunk tinha mechido com thread.

E thiago, vai assistir as aulas do marcelo maia em vez d ficar chamando os outros de loucos hhehaehahehaea

[code]import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class Teste extends JFrame{
private boolean executar; //variavel que falará se pode ou nao executar sua rotina
private JButton botao; //botao para ativar e desativar sua rotina
JTextArea texto; //pra ver que ta funcionando

public Teste()
{
	//cria e adiciona botal
	botao = new JButton("Ativar");
	this.add(botao, BorderLayout.NORTH);
	//cria e adiciona textarea
	texto = new JTextArea();
	texto.setEnabled(false);
	this.add(texto);
	//adiciona evento ao botao
	botao.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			executar = !executar;
			if(executar)
				botao.setText("Desativar");
			else
				botao.setText("Ativar");
		}
	});
	//cria uma thread simples
	new ThreadSimples().start();
}

class ThreadSimples extends Thread {
    public void run() {
        while(true)
            try {
            	if(executar)
            		texto.setText(texto.getText() + "\nAqui vai seu loop.");
            	this.sleep(2000);
            } catch (InterruptedException e) {}
    }
}

public static void main(String[] args) {
	Teste t = new Teste();
	t.setSize(200,700);
	t.setLocationRelativeTo(null);
	t.setVisible(true);
	t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
[/code]

PERFEITO!!! Grande garoto isso que eu queria!!! VLEWW!!!