Olá pessoal
Estou estudando a classe Timer , estou tentado fazer um execício, mas está dando errado já tentei fazer de várias maneiras, já apaguei e fiz denovo, mas não funciona. O código é esse:
Essa é a interface:
package Relogio;
public interface Temporizador
{
void temporizador(ActionEvent event);
}
Esse é o programa:
package Relogio;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.Timer;
/**
*
* @author Administrador
*/
public class Relogio
{
public static void main(String[] args)
{
class CountDown implements Temporizador
{
private int count;
public CountDown(int initialcount)
{
count = initialcount;
}
public void temporizador(ActionEvent event)
{
if(count>=0)
{
System.out.println(count);
}
if(count == 0)
{
System.out.println("Decolar");
}
}
}
CountDown listener = new CountDown(10);
final int DELAY = 1000;
Timer t = new Timer(DELAY, listener);
t.start();
JOptionPane.showMessageDialog(null, "SAIR?");
System.exit(0);
}
}
Ele está dando erro na seguinte linha:
Timer t = new Timer(DELAY, listener);
A linha da interface também está dando erro, essa linha:
void temporizador(ActionEvent event);
Já procurei mas não consigo enchergar o erro. Alguém pode me ajudar?
o construtor de Timer recebe um int e um ActionListener…
package Relogio;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class Relogio
{
public static void main(String[] args)
{
class CountDown implements ActionListener
{
private int count;
public CountDown(int initialcount)
{
count = initialcount;
}
public void actionPerformed(ActionEvent event)
{
if(count>=0)
{
System.out.println(count);
}
if(count == 0)
{
System.out.println("Decolar");
}
count--;
}
}
CountDown listener = new CountDown(10);
final int DELAY = 1000;
Timer t = new Timer(DELAY, listener);
t.start();
JOptionPane.showMessageDialog(null, "SAIR?");
System.exit(0);
}
}
Legal cara não marca mais erro no Timer mas continua dando erro na interface, eu alterei a interface para rodar com o código que vc corrigiu, ela ficou assim:
public interface ActionListener
{
void actionPerformed(ActionEvent event);
}
Está dando erro na linha:
void actionPerformed(ActionEvent event);
Quando compilo a classe Relogio ele dá a seguinte mensagem de erro:
Qual é o problema com a interface?
Por que está dando erro?
a interface que estou usando ActionListener já existe…
java.awt.event.ActionListener
exclui essa sua interface…
Cara funcionou legal ,mas eu fiquei com uma dúvida, nessa linha:
final int DELAY = 1000;
Timer t = new Timer(DELAY, listener);
t.start();
Por exemplo na class CountDown o count inicia com 10.
Mas como o Timer reenvia a informação reduzindo o valor?
Eu sei que no método da class o count é subtraído, mas ele fica como nove porém ele continua descendo no código onde nessa linha
CountDown listener = new CountDown(10); ele retorna a 10.
Pelo que entendi a linha do Timer "Timer t = new Timer(DELAY, listener); retorna a pegar o valor do listener que é 10.
Cara estou confuso. Você pode me explicar?
Como ele conta de 10 À 0?
o metodo actionPerformed do ActionListener é executado a cada vez que o timer alcança o delay, veja que dentro desse metodo tem um count-- essa linha subtrai 1 da variavel count, assim ele vai ate 0…
Entendeu?
qualquer coisa pode mandar um email ou me add no msn…
Cara vamos ver se eu entendi, o programa chega até o timer que envia a informação para o método e o métoda trabalha como um loop conforme o delay até chegar em 0 ou no caso até eu clicar no botão sair.
Se for isso cara valeu mesmo pela força.
Eu estou precisando de um manual ou apostila que ensine legal a trabalhar com NetBeans 4.1. Se vc tiver , vc pode mandar no meu e-mail.
O e-mail é esse:
alexandremanowar@hotmail.com
Tenho espaço de 25 mb livre.
Valeu mais uma vez