Java Swing Timer

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

  1. timer.setRepeats(false) == timerRoept de actionperformte methode slechts één keer op
  2. timer.setRepeats(true) == timerRoept de actionperformte methode herhaaldelijk op basis van gespecificeerde tijd

Swing Timer Work

  1. Doe de taak een keer
  2. Doe de taak herhaaldelijke tijd

stappen om swing timer te maken:

  1. Maak de ActionListener
  2. Maak de timer-constructor en passeer dan tijd en actueleListener in die
  3. Implementeer de actionPerformed()-functie waarin uw taak
  4. Gebruik timer.start()voor het starten van de taak tussen de tijd die is opgegeven in Timer Constructor, gebruik timer.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.Timeris bedoeld voor UI gerelateerde getimede operaties, vandaar waarom het nodig heeft en EDT uitgevoerd. Voor meer algemene bewerkingen moet u java.util.Timergebruiken.

Dit artikel is gekoppeld aan de Javadocs – http: // Java. Sun.com/products/jfc/tsc/articles/timer/

Other episodes