Duvida basica de como trabalhar com loop

5 respostas
S

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.

5 Respostas

thiagotrss

Por mim você é doido

douglas_vidotto

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

//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

}

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

S

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!!

edersonn

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

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

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

Criado 25 de janeiro de 2009
Ultima resposta 25 de jan. de 2009
Respostas 5
Participantes 4