Continuação do timer, mesmo fechando a janela

7 respostas
Suellen_Susu

Olá pessoal!!!

Seguinte: criei um timer em netbeans, apenas como exemplo, pois preciso implementá-lo em outro programa...
Meu exemplo esta assim: um label mostrando o timer, e 3 botoes...

public class tempo4 extends javax.swing.JFrame {
    DateFormat dateFormat;      
    Calendar calendar;       
    Timer timer; 
    boolean janela = true;
    /** Creates new form tempo4 */
    public tempo4() {
        this.dateFormat = new SimpleDateFormat("HH:mm:ss");   
        this.calendar = Calendar.getInstance();   
        this.calendar.set(Calendar.MILLISECOND, 0);   
        this.calendar.set(Calendar.SECOND, 0);   
        this.calendar.set(Calendar.MINUTE, 0);   
        this.calendar.set(Calendar.HOUR_OF_DAY, 0);                     
        this.initialize(); 
        initComponents();
    }
    protected void initialize() {   
        this.add(this.getLabel());    
        this.go();   
    }   
  
    public JLabel getLabel() {   
        if (this.jLabel1 == null) {   
            this.jLabel1 = new JLabel(getTime());   
            //this.label.setPreferredSize(new Dimension(100, 22));   
        }   
        return this.jLabel1;   
    }
    
    public void go() {   
        ActionListener action = new ActionListener() {   
            public void actionPerformed(ActionEvent e) {   
                jLabel1.setText(getTime());   
            }
        };   
        this.timer = new Timer(1000, action);   
        this.timer.start();   
    }   
  
    public String getTime() {   
        this.calendar.add(Calendar.SECOND, 1);   
        return this.dateFormat.format(this.calendar.getTime());   
    }   
 
   //aqui estao os botoes "start", "stop" e "janela", respectivamente...
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        if (!timer.isRunning()) {   
            timer.start();          
    }
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        if (timer.isRunning()) {   
            timer.stop();   
         } 
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        this.dispose();
        JOptionPane.showMessageDialog(null, "Você irá para a próxima janela!");
        new tempo4().setVisible(true);
    }

Só q é o seguinte: reparem q no jButton3 eu fecho minha janela, e ela abre novamente apos a mensagem...

Queria com q, ao abrir novamente a janela, ele ñ reiniciasse o timer, mas q pegasse o tempo q ele parou na ultima exibição do timer, e q ao abrir a janela d novo, comece a contagem a partir da onde ele parou...

Tem como me ajudarem pessoal?!?!

Obrigada desde jah.... ;D

7 Respostas

ViniGodoy

Você não pode destruir a janela. Crie uma única referência da janela, e exiba-a e esconda-a com setVisible.

O importante é não dar “new” na janela 2 vezes.

Suellen_Susu

Não pode ser assim Vini, pq no programa q vou implementar o código do timer, a mesma janela abre e fecha várias vezes…

ViniGodoy

E no que isso impede de funcionar assim?

Outra alternativa é gravar o valor do timer no banco ou num arquivo de configuração. E restaura-lo ao abrir a janela. Mas parece muita complicação pra algo simples. Sem falar que esse valor vai sobreviver entre duas execuções do programa também.

Suellen_Susu

ViniGodoy:
E no que isso impede de funcionar assim?

Outra alternativa é gravar o valor do timer no banco ou num arquivo de configuração. E restaura-lo ao abrir a janela. Mas parece muita complicação pra algo simples. Sem falar que esse valor vai sobreviver entre duas execuções do programa também.

Mas assim, será q ñ teria algum método da classe timer q fizesse com q o timer parace, e no q abrisse a janela d novo, ele começasse a contar da onde parou?

ViniGodoy

Talvez se substituir seu timer por isso aqui:
http://www.guj.com.br/posts/list/84373.java#450770

Suellen_Susu

Mas assim, tava vendo um livro d java ontem, e vi q entre as classes util.timer e swing.timer, existem diferenças entre elas, apesar d ambas terem alguns comandos com msmo nome.

quais seriam estas diferenças, e ql a função dos principais comandos delas?

Suellen_Susu

É, realmente, ñ consegui arrumar o timer como precisava ViniGodoy… :frowning:

se vc pudesse me dar outro auxilio, ficaria grata…

Obrigada desde jah…

Criado 16 de agosto de 2010
Ultima resposta 23 de ago. de 2010
Respostas 7
Participantes 2