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