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 :

SwingWorker et DragNDrop


Sujet :

EDT/SwingWorker Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut SwingWorker et DragNDrop
    Bonjour,

    Dans mon applet j'ai créé une classe zoneApercu dans laquelle on peut faire du drag and drop de fichiers qui seront ensuite récupérés et traités.

    Pour faire patienter l'utilisateur pendant le traite des fichiers qu'il a glissés (par exemple une centaine), ma méthode setWaiting() affiche une gif animé. Mon problème est que dès que le traitement commence (voir méthode drop() dans mon code), le gif animé se fige et l'interface est comme bloquée. Il semblerait que SwingWorker puisse m'aider contre ce problème, seulement je n'arrive pas à l'intégrer dans ma zoneApercu. Les tentatives que j'ai faites non menées à rien, mon gif tournait en boucle et aucun traitement ne se faisait

    Quelqu'un peut me guider svp?

    Voici mon code (je n'ai mis que la partie concernée par ma demande).

    Merci d'avance

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    import java.awt.datatransfer.*;
    import java.awt.dnd.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    import java.awt.Cursor;
    import java.awt.GridLayout;
    import java.awt.Color;
     
    public class zoneApercu extends JLabel implements DropTargetListener
    {
        // Déclarations ...
     
        public zoneApercu()
        {
            // Code ...
        }
     
        // Autres méthodes ...
     
        public void setWaiting()
        {
            Icon icon = new ImageIcon(scanJava.waitGif);
            setIcon(icon);
        }
     
        public void dragEnter(DropTargetDragEvent dtde)
        {
     
        }
     
        public void dragExit(DropTargetEvent dte)
        {
            try { interscanJava.refreshView(); }
            catch(Exception e) { e.printStackTrace(); }
        }
     
        public void dragOver(DropTargetDragEvent dtde)
        {
           this.setWaiting();
        }
     
        public void drop(DropTargetDropEvent dtde)
        {
            dtde.acceptDrop(DnDConstants.ACTION_COPY);
     
            setCursor(new Cursor(Cursor.WAIT_CURSOR));
     
            Transferable transferable = dtde.getTransferable();
            DataFlavor types[] = transferable.getTransferDataFlavors();
            File document = null;
            String copyPath = null;
     
            try
            {
                for(int i=0 ; i<types.length ; i++)
                {
                    DataFlavor type = types[i];
     
                    if(type.equals(DataFlavor.javaFileListFlavor))
                    {
                        List listeDocuments = (List) transferable.getTransferData(type);
                        for(int j=0 ; j<listeDocuments.size() ; j++)
                        {
                            document = (File) listeDocuments.get(j);
                            copyPath  = ScanWizard.importDocument(document);
                        }
                    }
                }
                scan.javascriptSetPageNumbering();
                DocumentReader.getDescription(copyPath, document.getName());
            }
            catch(Exception e) { e.printStackTrace(); }
     
            dtde.dropComplete(true);
            setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        }
     
        public void dropActionChanged(DropTargetDragEvent dtde)
        {
     
        }
    }

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Mais où est ton SwingWorker ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Points : 199
    Points
    199
    Par défaut
    A mon avis, il s'agit d'un probleme de thread.
    pour que ton application continue a reagir pendant que traitement s'effectue, celui-ci doit etre exécuté sur un autre thread que l'edt.

    par exemple, on peut avoir facilement 3 threads:
    event dispatch thread: thread gestion evenement/dessin
    un autre thread a toi : ton traitement en tache de fond
    un timer, ou autre truc d'annimation : machin pour calculer l'annimation.

Discussions similaires

  1. SwingWorker / dans le sens contraire?
    Par ®om dans le forum EDT/SwingWorker
    Réponses: 3
    Dernier message: 11/11/2006, 12h35
  2. Mettre une image au curseur de la souris lors d'un dragndrop
    Par malag dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 10/09/2006, 03h16
  3. Relié par un vecteur 2 éléments dragndrop
    Par avogadro dans le forum Langage
    Réponses: 21
    Dernier message: 03/05/2006, 01h20
  4. DragNDrop
    Par aDamas dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 08/12/2005, 13h51
  5. [JTree] dragNdrop
    Par biozaxx dans le forum Composants
    Réponses: 3
    Dernier message: 19/05/2005, 13h04

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