Bonjour,
Est-ce que quelqu'un aurait une idée de pourquoi lorsque je crée ma classe "MyTranferHandler" en java le glisser déposer sur mon composant swing de ma scene javafx marche après compilation et lorsque je transpose cette même classe en javafx ca ne marche plus?
Voici ma classe "MyTransferHandler" en java:
Voici cette même classe en javafx:
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 package Metier; import Vue.Model; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.io.File; import java.util.List; import javafx.stage.Alert; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.TransferHandler; public class MyTransferHandler extends TransferHandler{ String myList= ""; Model model; /** * Cette fonction permet d'indiquer les données qui peuvent * être acceptées ou non par le composant. * @param cp * @param df * @return */ @Override public boolean canImport(JComponent cp, DataFlavor[] df) { for (int i = 0; i < df.length; i++) { if (df[i].equals(DataFlavor.javaFileListFlavor)) { return true; } if (df[i].equals(DataFlavor.stringFlavor)) { return true; } } return false; } @Override public boolean importData(JComponent cp, Transferable tr) { if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { try { List files = (List)(tr.getTransferData(DataFlavor.javaFileListFlavor)); for (int i = 0; i < files.size(); i++) { File file = (File)files.get(i); myList = file.getPath() + "\n"; if(file.isFile()) { if(file.length() < 4294967295.0) { model.dlm.addElement(myList); return true; } else { Alert.inform("Le fichier "+file.getName()+" est trop volumineux et ne peux être ajouté"); } } else { return false; } } return false; } catch (Exception e) {e.printStackTrace();} return false; } if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { String myData =(String)(tr.getTransferData(DataFlavor.stringFlavor)); ((JList)cp).setName(myData); } catch (Exception e) { e.printStackTrace(); } } return false; } };
Code de mon composant Swing:
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 package Vue; import Vue.Model; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.io.File; import java.util.List; import javafx.stage.Alert; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.TransferHandler; public class MyTransferHandler extends TransferHandler{ var myList:String = ""; var model: Model; /** * Cette fonction permet d'indiquer les données qui peuvent * être acceptées ou non par le composant. * @param cp * @param df * @return */ public function canImport(cp:JComponent , df:DataFlavor[]):Boolean { for (i in [0..df.size()]) { if (df[i].equals(DataFlavor.javaFileListFlavor)) { return true; } if (df[i].equals(DataFlavor.stringFlavor)) { return true; } } return false; } public override function importData(cp:JComponent, tr: Transferable):Boolean { if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { try { var files:List =(tr.getTransferData(DataFlavor.javaFileListFlavor) as List); for ( i in [0..files.size()]) { var file:File = (files.get(i) as File); myList = "{file.getPath()}\n"; if(file.isFile()) { if(file.length() < 4294967295.0) { model.dlm.addElement(myList); return true; } else { Alert.inform("Le fichier {file.getName()} est trop volumineux et ne peux être ajouté"); } } else { return false; } } return false; } catch (Exception) {Exception.printStackTrace();} return false; } if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { var myData:String =(tr.getTransferData(DataFlavor.stringFlavor)as String); (cp as JList).setName(myData); } catch (Exception) { Exception.printStackTrace(); } } return false; } };
Merci d'avance pour votre aide
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 package Vue; import javafx.ext.swing.SwingComponent; import javax.swing.ListSelectionModel; import javax.swing.JScrollPane; import Metier.MyTransferHandler; import javax.swing.TransferHandler; public class ListViewSwing extends Model, SwingComponent{ /*on garde ici une reference public pour pouvoir acceder a notre composant*/ public-read var ascenseur: JScrollPane; public override function createJComponent(): javax.swing.JScrollPane{ ascenseur = new JScrollPane(list); /** activer la selection multiple */ list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // activer la possibiliter de glisser un objet list.setDragEnabled(true); list.setTransferHandler(new MyTransferHandler()); return ascenseur; } }
Partager