salut,
je suis en JAVA 6 et veux faire du DND pour des JTree,
avec TansferHandler, tout fonctionne très bien, mais c'est toujours mieux d'avoir plusieurs moyen de faire la même opération (je ne sais pas trop pourquoi, mais il parait que c'est comme ça). j'ai donc décidé de créer des bouton pour lesquels j'ai mis :
premier problème : cette opération ne donne rien, comme si il n'y a pas de actionPerformed dans les actions par défaut du handler !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 monBoutton.setAction(monHandler.getCopyAction(); monAutreBoutton.setAction(monAutreHandler.getPasteAction();
j'ai donc décidé de créer mon propre Clipboard (un objet static, toujours le même)
dans mon transfer Handler, j'ai rajouter ça :
et j'ai créé des classes qui étendent AbstractAction et qui appellent importData(JComponent c, Transferable t) et createTransferable(JComponent c) (respectivement pou coller et copier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @Override public void exportToClipboard(JComponent comp, Clipboard clip, int action) { super.exportToClipboard(comp, monClipboardStatic, action); }
les boutons qui utilisent ces actions fonctionnent bien,
le souci maintenant, c'est avec les raccourcis clavier : ctrl+C et ctrl+V sont prédéfinis et je ne sais pas comment les enlever.
en plus le crtl+C fonctionne parfaitement, parcontre, ctrl+V renvoie une erreur :'(
si vous avez des conseils, je suis preneur
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 java.net.MalformedURLException: unknown protocol: java.net.malformedurlexception at java.net.URL.<init>(URL.java:574) at java.net.URL.<init>(URL.java:464) at java.net.URL.<init>(URL.java:413) at sun.awt.windows.WDataTransferer.translateBytesOrStream(WDataTransferer.java:204) at sun.awt.datatransfer.DataTransferer.translateBytes(DataTransferer.java:1349) at sun.awt.datatransfer.ClipboardTransferable$DataFactory.getTransferData(ClipboardTransferable.java:53) at sun.awt.datatransfer.ClipboardTransferable.getTransferData(ClipboardTransferable.java:152) at gui.transferHandler.ImportTransferHandler.importData(ImportTransferHandler.java:63) at javax.swing.TransferHandler.importData(TransferHandler.java:745) at javax.swing.TransferHandler$TransferAction.actionPerformed(TransferHandler.java:1655) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636) at javax.swing.JComponent.processKeyBinding(JComponent.java:2849) at javax.swing.JComponent.processKeyBindings(JComponent.java:2884) at javax.swing.JComponent.processKeyEvent(JComponent.java:2812) at java.awt.Component.processEvent(Component.java:5818) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:697) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:962) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:834) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:661) at java.awt.Component.dispatchEventImpl(Component.java:4285) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Partager