n° 174
Maggio 2012
Maggio 18, 2012, 06:27:44 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Aiuto su Timer  (Letto 282 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
fermat85
Full Member
***

Karma: +4/-2
Scollegato Scollegato

Messaggi: 379


Mostra profilo WWW
« inserita:: Febbraio 01, 2012, 01:57:52 pm »

salve!
sto cercando di usare Timer per ripetere una determinata azione, ma solo una JCheckBox è ceccata.
ho provato così:
Codice:
    private void cbTimerStateChanged(javax.swing.event.ChangeEvent evt) {
        if (cbTimer.isSelected()) {
            Timer timer = new Timer();
            TimerTask task = new TimerTask() {

                @Override
                public void run() {
                    try {
                        takeWeather();
                    } catch (JDOMException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (ParserConfigurationException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (SAXException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (IOException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    }
                }
            };
            timer.schedule(task, 10000);
        }
    }
takeWeather() è il metodo che dovrei ripetere.
il tutto però nn sembra funzionare.
sulla JCheckBox (cbTimer) ho messo un evento stateChanged.
avete qualche idea?
Registrato

fermat85
Full Member
***

Karma: +4/-2
Scollegato Scollegato

Messaggi: 379


Mostra profilo WWW
« Risposta #1 inserita:: Febbraio 01, 2012, 02:24:09 pm »

ok ho risolto:
Codice:
    private void cbTimerItemStateChanged(java.awt.event.ItemEvent evt) {
        if (cbTimer.isSelected()) {
            TimerTask task = new TimerTask() {

                @Override
                public void run() {
                    try {
                        takeWeather();
                        System.out.println("eseguito");
                    } catch (JDOMException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (ParserConfigurationException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (SAXException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    } catch (IOException ex) {
                        JOptionPane.showMessageDialog(null, ex.getMessage());
                    }
                }
            };
            timer.schedule(task, 5000, 5000);
        } else {
            timer.cancel();
        }
    }
ho cambiato tipo di evento ed ho usato un altro schedule.
Registrato

fermat85
Full Member
***

Karma: +4/-2
Scollegato Scollegato

Messaggi: 379


Mostra profilo WWW
« Risposta #2 inserita:: Febbraio 01, 2012, 02:34:48 pm »

come nn detto.
ho riscontrato questo problema:
-seleziono la checkbox e il timer parte
-la deseleziono e il timer si stoppa
-la riseleziono e mi viene lanciata un'eccezione:
Codice:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Timer already cancelled.

EDIT: avevo sbagliato ad istanziare Timer......
Registrato

Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page