Volgens de documentatie moet deze timer één keer vuren, maar het vuurt nooit.
Ik heb het een keer nodig.
Antwoord 1, Autoriteit 100%
Dit eenvoudige programma werkt voor mij:
import java.awt.event.*;
import javax.swing.*;
public class Test {
public static void main(String [] args) throws Exception{
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
System.out.println("Reading SMTP Info.");
}
};
Timer timer = new Timer(100 ,taskPerformer);
timer.setRepeats(false);
timer.start();
Thread.sleep(5000);
}
}
Antwoord 2, Autoriteit 26%
Dit programma werkt prima …
setRepeats(boolean flag)
Functie Gebruikt om te instellen Bel de function(actionPerformed)
herhaaldelijk of slechts één keer als
timer.setRepeats(false) == timer
Roept de actionperformte methode slechts één keer optimer.setRepeats(true) == timer
Roept de actionperformte methode herhaaldelijk op basis van gespecificeerde tijd
Swing Timer Work
- Doe de taak een keer
- Doe de taak herhaaldelijke tijd
stappen om swing timer te maken:
- Maak de ActionListener
- Maak de timer-constructor en passeer dan tijd en actueleListener in die
- Implementeer de
actionPerformed()
-functie waarin uw taak - Gebruik
timer.start()
voor het starten van de taak tussen de tijd die is opgegeven in Timer Constructor, gebruiktimer.stop()
voor stop de taak
Voorbeeld:
ActionListener al=new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//do your task
if(work done)
timer.stop();//stop the task after do the work
}
};
Timer timer=new Timer(1000,al);//create the timer which calls the actionperformed method for every 1000 millisecond(1 second=1000 millisecond)
timer.start();//start the task
Antwoord 3, Autoriteit 5%
Uw taak heeft waarschijnlijk alleen betrekking op Rapport Resultaten op de gebeurtenisdiscussie (EDT) maar doe het werkelijke werk op een achtergronddraad tegen een periodiek tarief.
scheduledexecutorservice is precies wat je wilt. Vergeet niet om de staat van uw gebruikersinterface op de EDT via Swingutility bij te werken.Invokelater (…)
Antwoord 4, Autoriteit 5%
Ik vermoed van de logverklaring die u een soort van SMTP-werking doet. Ik denk dat ik gelijk heb met het zeggen van de java.swing.Timer
is bedoeld voor UI gerelateerde getimede operaties, vandaar waarom het nodig heeft en EDT uitgevoerd. Voor meer algemene bewerkingen moet u java.util.Timer
gebruiken.
Dit artikel is gekoppeld aan de Javadocs – http: // Java. Sun.com/products/jfc/tsc/articles/timer/