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) { } }
Partager