Drag n drop

dabrokez Messages postés 10 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 3 mars 2004 - 22 janv. 2003 à 10:47
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 5 déc. 2004 à 09:38
Salut!

Je suis un nouveau sur le site et j'ai vraiment besoin d'aide...

Voià je dois effectuer un drag d'un item d'une jList (le texte de cet item) vers word mais lorsque je drop dans word j'ai une série de mauvais caracteres qui s'incrustent a la fin du text de mon item.... en gros cela donne ceci:
ITEM@<@??@<??? des trucs comme ca, ce que j'ai remarqué aussi c'est que c'est toujours une suite de 22 caracteres (mon item compris dedans)....

Est ce que quelqu'un aurait une idée pour résoudre mon problème? C'est vraiment urgent...

Please aidez moi sinon je sens que je vais décédé des suite de la destruction itempestive de mes neurones suite a mes recherches sur le net qui n'ont pas étées fructueuses.....
*
Merci d'avance.
a+
Da Brokezz

4 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
22 janv. 2003 à 11:15
Le objets dans ta JList sont des String ou autre chose ?
JHelp
0
dabrokez Messages postés 10 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 3 mars 2004
22 janv. 2003 à 12:06
Ce sont d'autre objets, mais je recupere un string ca ya pas de probleme de ce coté là.

Disons que ma liste affiche ITEM1,ITEM2,ITEM3,....

Moi j'arrive a recupéré correctement un string equivalent a ITEM2 par exemple, mais c'est au moment du drop que je me retrouve avec ITEM2@<??@>??

C'est bizarre tout de meme.. mais j'ai cru lire un truc sur java.sun.com du style que lorsque je transforme mon string en tableau de byte pour un objet ByteArrayInputStream (pour le transferrable), je dois lui passé le style d'encryption du style "unicode" ou "UTF-16LE"... mais j'ai pas bien compris...

Da Brokezz
0
dabrokez Messages postés 10 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 3 mars 2004
22 janv. 2003 à 12:18
Je recupere bien un String (meme si au depart ma liste contient des objets, ce que je récupére est bien un string), de ce coté la il n'y a pas de probleme...

Par exemple ma liste affiche ITEM1,ITEM2,ITEM3,....

Moi je recupere ITEM2 par exemple, sous forme de string, mais lors du drop dans word je me retrouve avec ITEM2@<????@<<@?.... je ne comprends pas...

Je suis allé sur le site de sun et j'ai trouvé un indice mais j'ai pas bien compris,... Cela serait peut un probleme d'encyption lors de la recuperation de l'objet transferable....

Exemple quand je creer mon objet t ransferable, voilà le source ca sera plus facile :

public synchronized Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
System.err.println( "getTransferData(): ");
dumpFlavor(flavor);

if (flavor.equals(StringTransferable.plainTextFlavor)) {
return new ByteArrayInputStream(this.string.getBytes("UTF-16LE"));

}
else
if (StringTransferable.localStringFlavor.equals(flavor)) {
return this.string;
}
else {
throw new UnsupportedFlavorException (flavor);
}
}

Le probleme d'encryption vient du getbytes("....") a priori il faudrait mettre UTF_16LE mais cela marche 2-3 fois et apres mon probleme revient et pourtant je n'ai aucune excption, aucune erreur rien....

J'avoue que je suis complétement paumé.

Voilà le code de ma classe en entier si quelqu'un a une idée :

package madoudm;

import java.awt.dnd.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.io.*;
import javax.swing.JList;

public class JList_Drag extends JList implements DragGestureListener,

DragSourceListener {

String lSelectedText = "";
boolean lStartDrag = false;
DragGestureRecognizer lDragGestureRecognizer =null;

private DragSource lDragSource = null;
private DragSourceContext lDragSourceContext = null;

private DropTargetContext lDropTargetContext = null;

public JList_Drag() {
super ();

lDragSource = new DragSource();
lDragGestureRecognizer = lDragSource.createDefaultDragGestureRecognizer(this,DnDConstants.ACTION_MOVE,this);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

public void dragGestureRecognized(DragGestureEvent e) {
Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();

Transferable t = new StringTransferable(Recupere_Selection().toString());
clipboard.setContents(t,null);
lDragSource.startDrag (e, DragSource.DefaultCopyNoDrop, t, this);
}

public void dragDropEnd (DragSourceDropEvent e){}

public void dragEnter (DragSourceDragEvent e){}
public void dragExit (DragSourceEvent e){}
public void dragOver (DragSourceDragEvent e){}
public void dropActionChanged(DragSourceDragEvent e){}

String Recupere_Selection(){
return new String("<<"+((O_Noeud)this.getSelectedValue()).getLibelle()+">>");
}
private void jbInit() throws Exception {
this.setFont(new java.awt.Font("SansSerif", 0, 12));
}

public static class StringTransferable implements Transferable, ClipboardOwner {
// We don't really need these class variables since the array will contain them.
// In a future article we will actually make our own flavors here.
public static final DataFlavor plainTextFlavor=DataFlavor.plainTextFlavor;
public static final DataFlavor localStringFlavor = DataFlavor.stringFlavor;

public static final DataFlavor[] flavors = {
StringTransferable.plainTextFlavor,
StringTransferable.localStringFlavor,

};

private static final java.util.List flavorList = Arrays.asList( flavors );
private String string;

/**
* Constructor.
* simply initializes instance variable
*/
public StringTransferable(String string) {
this.string = string;
}

private void dumpFlavor(DataFlavor flavor) {
System.out.println( "getMimeType " +
flavor.getMimeType() );
System.out.println( "getHumanPresentableName " +
flavor.getHumanPresentableName() );
System.out.println( "getRepresentationClass " +
flavor.getRepresentationClass().getName() );
System.out.println( "isMimeTypeSerializedObject " +
flavor.isMimeTypeSerializedObject() );
System.out.println( "isRepresentationClassInputStream " +
flavor.isRepresentationClassInputStream() );
System.out.println( "isRepresentationClassSerializable " +
flavor.isRepresentationClassSerializable() );
System.out.println( "isRepresentationClassRemote " +
flavor.isRepresentationClassRemote() );
System.out.println( "isFlavorSerializedObjectType " +
flavor.isFlavorSerializedObjectType() );
System.out.println( "isFlavorRemoteObjectType " +
flavor.isFlavorRemoteObjectType() );
System.out.println( "isFlavorJavaFileListType " +
flavor.isFlavorJavaFileListType() );
System.out.println( "String " +
this.string);
}

public synchronized DataFlavor[] getTransferDataFlavors() {
// return (DataFlavor[]) flavorList.toArray();
return flavors;
}

public boolean isDataFlavorSupported( DataFlavor flavor ) {
return ( flavorList.contains( flavor ) );
}

public synchronized Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
System.err.println( "getTransferData(): ");
dumpFlavor(flavor);

if (flavor.equals(StringTransferable.plainTextFlavor)) {
return new ByteArrayInputStream(this.string.getBytes("UTF-16LE"));
//US-ASCII, ISO-8859-1  UTF-8 UTF-16BE UTF-16LE UTF-16 US-ASCII ISO-8859-15 UnicodeLittleUnmarked
}
else
if (StringTransferable.localStringFlavor.equals(flavor)) {
return this.string;
}
else {
throw new UnsupportedFlavorException (flavor);
}
}
public String toString() {
return "StringTransferable";
}

public void lostOwnership(Clipboard clipboard, Transferable contents) {
System.out.println ("StringTransferable lost ownership of " +
clipboard.getName());
System.out.println ("data: " + contents);
}
}

}

C'est pas moi qui ai ecrit la majorité du code et je remerci le gars qui l'a fait... voilà.

a+
Da Brokezz
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
5 déc. 2004 à 09:38
Salut,
Je sais que ca fait un petit moment que ce post est ici mais on ne sait jamais... des fois que...

je vien de me poser le meme probleme de Drag&Drop et je suis tombé sur cette source... j'ai essayé de la déchiffré un peu et meme si je comprend pas tout, il y a 1 truc qui me frappe avant tout... tu fait un cast a partir d'un type "O_Noeud"... qui n'est pas défini... et apparament, ca plait pas trop a Java...

Peut etre ce probleme a t il ete résolu ?

Que le Drag 'n Drop soit avec toi...

AbriBus...
0
Rejoignez-nous