IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDT/SwingWorker Java Discussion :

Lancement d'un SwingWorker plusieurs fois


Sujet :

EDT/SwingWorker Java

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Points : 149
    Points
    149
    Par défaut Lancement d'un SwingWorker plusieurs fois
    Bonjour à tous,

    Voilà j'ai un léger souci sur mon SwingWorker et je ne comprend pas pourquoi.

    J'ai créé une classe qui fusionne SwingWorker et ActionListener, cela donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public abstract class AbstractMMIActionSwingWorker extends SwingWorker<Boolean, Boolean> implements ActionListener {
     
    	private static final Logger LOGGER = Logger.getLogger(AbstractMMIActionSwingWorker.class);
    	private ActionEvent event;
     
    	public AbstractMMIActionSwingWorker() {
    		super();
    	}
     
    	public abstract void doInBackground(ActionEvent actionEvent) throws MMIException;
    	public abstract void preAction(ActionEvent actionEvent) throws MMIException;
    	public abstract void postAction(ActionEvent actionEvent) throws MMIException;
     
    	/**
             * {@inheritDoc}
             */
    	@Override
    	protected final Boolean doInBackground() throws Exception {
    		try {
    			LOGGER.info("AbstractMMIActionSwingWorker.doInBackground()");
    			doInBackground(event);
    		} catch (MMIException e) {
    			handleException(e);
    		}
    		return Boolean.TRUE;
    	}
     
    	/**
             * {@inheritDoc}
             */
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		this.event = e;
    		try {
    			preAction(e);
    			this.execute();
    		} catch (MMIException ex) {
    			handleException(ex);
    		}
    	}
     
    	/**
             * {@inheritDoc}
             */
    	@Override
    	protected void done() {
    		try {
    			get();
    			postAction(event);
    		} catch (MMIException | InterruptedException | ExecutionException e) {
    			handleException(e);
    		}
    	}
     
    	protected void handleException(Exception e) {
    		LOGGER.error("Error", e);
    	}
     
    }
    Mon problème est que j'ajoute cela à un bouton pour lancer des traitements en tant qu'ActionListener, cela fonctionne très bien... la première fois ! Si je clique sur le bouton une deuxième fois (après que tout le SwingWorker ait été correctement exécuté) la preAction est bien démarrée mais je ne passe jamais dans ma méthode doInBackGround()... Une idée de pourquoi ?

    Merci d'avance !

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Points : 149
    Points
    149
    Par défaut
    Bon pour ceux que ça intéresse en fait je viens de tomber là-dessus sur la doc des SwingWorker (que bien entendu je n'avais pas vu avant...):

    SwingWorker is only designed to be executed once. Executing a SwingWorker more than once will not result in invoking the doInBackground method twice.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bloquer le lancement de mon application plusieurs fois
    Par marseillais57 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/12/2005, 10h51
  2. [ADOQuery] Parametre utilisé plusieurs fois
    Par gibet_b dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/09/2004, 10h57
  3. Réponses: 2
    Dernier message: 10/07/2004, 17h14
  4. [Servlet] Comment utilisé une servlet plusieurs fois ?
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 03/06/2004, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo