Ho visto solo ora l'aggiornamento della discussione e mi sono anche accorto di aver sbagliato il nome del metodo di Timer: il metodo da richiamare è restart() non reset() (che non esiste).
Comunque, qui un esempio scritto al volo che ti fa vedere il funzionamento di questo metodo:
Quello che interessa a te è il funzionamento del Timer chiamato "timerStampa", che in pratica funziona come il tuo timer: se non viene premuto il pulsante entro 5 secondi, lui stampa una riga nella TextArea (l'altro timer serve solo a visualizzare il countdown a video). Al contrario, se viene premuto il pulsante, allora il timer viene resettato (chiamo restart()) e si avranno a disposizione ulteriori 5 secondi prima che la stringa venga scritta.codice:import java.awt.*; import javax.swing.*; import java.awt.event.*; public class EsempioTimer extends JFrame implements ActionListener { private class Stampa implements ActionListener { @Override public void actionPerformed(ActionEvent ae) { stampa(); } } private class Controllo implements ActionListener { @Override public void actionPerformed(ActionEvent ae) { controllo(); } } private JLabel lblTimer; private JButton cmdResetta; private JTextArea txtArea; private Timer timerStampa; private Timer timerControllo; private int timeOut; public EsempioTimer() { Container c = getContentPane(); c.setLayout( new BorderLayout() ); timeOut = 4; lblTimer = new JLabel(); txtArea = new JTextArea(); JScrollPane jsp = new JScrollPane( txtArea ); cmdResetta = new JButton("Resetta timer"); cmdResetta.addActionListener( this ); JPanel jp = new JPanel( new FlowLayout(FlowLayout.CENTER, 1, 10) ); jp.add( cmdResetta ); c.add(lblTimer, BorderLayout.NORTH); c.add(jsp, BorderLayout.CENTER); c.add(jp, BorderLayout.SOUTH); setTitle("Esempio timer"); setSize(300, 400); setLocationRelativeTo( null ); setDefaultCloseOperation( EXIT_ON_CLOSE ); setVisible( true ); timerStampa = new Timer(5000, new Stampa()); timerControllo = new Timer(1000, new Controllo()); timerControllo.start(); timerStampa.start(); } private void controllo() { lblTimer.setText("Fra " + timeOut + " secondi verrà aggiunta una scritta"); timeOut--; } private void stampa() { txtArea.append("Ecco una scritta!\n"); timeOut = 5; } @Override public void actionPerformed(ActionEvent ae) { timeOut = 4; timerStampa.restart(); timerControllo.restart(); } public static void main(String[] args) { EsempioTimer et = new EsempioTimer(); } }
Ciao.![]()



Rispondi quotando