Drag and drop issue between JLists

Hi,
I am trying to implement DnD into my application between different JLists, but I can't get it to work.
In my application I have two different panels, a SearchPanel, and a DataPanel.
On each panel I have two JLists, one which contains strings, another which contains a custom class called Goals.
The lists on the searchpanels are the source of the drag action, each with their own DataFlavor. I wanted each of the two JLists on the datapanel to accept both flavors, so I implemented the DropTargetListener on the DataPanel. I figured I could determine where the drag came from depending the DataFlavor of the Transferable, but somehow, he treats the GoalTransferable as Strings, and adds them to the wrong list...
Is there anyone that knows were I might have made a mistake?
Here is some code:
The search panel with relevant bits and pieces, th materialsList contains Strings, the goalsList contains Goal objects
public class SearchPanel extends JPanel implements ActionListener, DragGestureListener, DragSourceListener {
   private JList materialsList;
   private JList goalsList;
   private void createGUI () {
      materialsList = new JList();
      materialsList.setDragEnabled(true);
      goalsList = new JList();
      goalsList.setDragEnabled(true);
      DragSource dragSource = DragSource.getDefaultDragSource();
      dragSource.createDefaultDragGestureRecognizer(goalsList,DnDConstants.ACTION_COPY, this);
   public void dragGestureRecognized(DragGestureEvent dge) {
      Goal selection = (Goal)goalsList.getSelectedValue();
      Transferable transferable = new GoalTransferable(selection);
      dge.startDrag(new Cursor(Cursor.MOVE_CURSOR), transferable);
   public void dragDropEnd(DragSourceDropEvent dsde) {}
   public void dragEnter(DragSourceDragEvent dsde) {}
   public void dragExit(DragSourceEvent dse) {}
   public void dragOver(DragSourceDragEvent dsde) {}
   public void dropActionChanged(DragSourceDragEvent dsde) {}
}For the GoalTransferable class:
    public class GoalTransferable implements Transferable {
        private DataFlavor goalFlavor = null;
        private DataFlavor supportedFlavors[] = {goalFlavor};
        private Goal object;
        public GoalTransferable (Goal o) {
            object = o;
            try {
                goalFlavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=nl.lycos.fierensyves.jsv.data.Goal");
            } catch (Exception e) {}
        public Object getTransferData(DataFlavor df)
            throws UnsupportedFlavorException {
            if (isDataFlavorSupported (df))
                return object;
            else
                throw new UnsupportedFlavorException(df);
        public boolean isDataFlavorSupported (DataFlavor df) {
            return (df.equals (goalFlavor));
        public DataFlavor[] getTransferDataFlavors () {
            return supportedFlavors;
    }And finally for the datapanel:
public class DataPanel extends JPanel implements ActionListener, MouseListener, KeyListener, ChangeListener, DropTargetListener {
     private JList materials;
     private JList goals;
                private DataFlavor goalFlavor = null;
     public ActivityFrame (DataReader data) {
          this.materials = new JList();
                                DropTarget materialsTarget = new DropTarget(materials, this);
          this.goals = new JList();
          this.goals.addMouseListener(this);
                                DropTarget goalsTarget = new DropTarget(goals, this);
                                this.goals.setTransferHandler(new GoalTransferHandler(goals));
                                try {
                                                goalFlavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=nl.lycos.fierensyves.jsv.data.Goal");
                                } catch (Exception e) {}
                                public void drop (DropTargetDropEvent dtde) {
                                if (dtde.isDataFlavorSupported(goalFlavor)) {
                                                 //import goal
                                } else {
                                                 //import material
                                     TreeSetListModel model = (TreeSetListModel)this.materials.getModel();
                                                String material = "";
                                                try {
                                                                 material = dtde.getTransferable().getTransferData(DataFlavor.stringFlavor).toString();
                                                } catch (Exception e) {}
                                     model.addElement(material);
                                     this.materials.setModel(model);
                                     this.materials.updateUI();
                public void dragEnter(DropTargetDragEvent dtde) {}
                public void dragExit(DropTargetEvent dte) {}
                public void dragOver(DropTargetDragEvent dtde) {}
                public void dropActionChanged(DropTargetDragEvent dtde) {}       
}greetings,
fifijr

That does not exist - the workaround (maybe permanent solution - who knows) is
File menu ==> export
And BTW if you are not backingup all the time you are 100% guarenteed to lose all of your files and photos sooner or later
LN

Similar Messages

  • Drag and Drop issue in Jlist - Transferhandler not working

    Hi all,
    I have a problem associated with the drag and drop of components into a Jlist.
    When I drag component out of a Jlist, the control reaches inside transfer handler, but when I try to insert a component into the Jlist, the control does not reach inside Jlist transfer handler.
         jlist.setDropMode(DropMode.INSERT);
         jlist.setDragEnabled(true);
         jlist.setTransferHandler(new TransferHandler()
                   List fileList;
                   boolean export = false;
                   List<File> newList = null;
                   protected Transferable createTransferable(JComponent c)
                        System.out.println("inside handler");
                                    ..............................Please help me with this issue.
    Any help in this regard will be well appreciated with dukes.
    Regards,
    Anees

    AneesAhamed wrote:
    Hi all,
    I have a problem associated with the drag and drop of components into a Jlist.
    When I drag component out of a Jlist, the control reaches inside transfer handler, but when I try to insert a component into the Jlist, the control does not reach inside Jlist transfer handler.
    jlist.setDropMode(DropMode.INSERT);
    jlist.setDragEnabled(true);
    jlist.setTransferHandler(new TransferHandler()
                   List fileList;
                   boolean export = false;
                   List<File> newList = null;
                   protected Transferable createTransferable(JComponent c)
                        System.out.println("inside handler");
    ..............................Please help me with this issue.
    Any help in this regard will be well appreciated with dukes.If you're wondering why your createTransferable() method is not called when you drag from some other component and drop into the list it is because createTransferable() is called when you start dragging. So it would be the TransferHandler of the source component, not your target list, that has its createTransferable() called in that case.
    When the list is the target of a drag&drop you should see the canImport() method of your TransferHandler being called. Do a System.out(0 in that method as well and see if that is the case.

  • Drag and Drop images between two listviews

    I need a help for listview drag n drop opretion on winform. where  listview1 hold the images and i want to drag images from listview1 to listview2
    and then when i click any button i want all paths of Images which is in the listview2. and also i want to set the image size on listview2. Please help me.

    Hi Ajay Kumar,
    According to your description, you'd like to drag and drop listviewitems between two listviews.
    Here is my example for dropping items between listviews. You could add one imageList control to your form.
    public Form1()
    InitializeComponent();
    this.listView2.AllowDrop = true;
    this.listView1.AllowDrop = true;
    this.listView2.View = System.Windows.Forms.View.LargeIcon;
    this.listView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.OnDragDrop);
    this.listView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.OnDragEnter);
    this.listView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.OnItemDrag);
    private void Form1_Load(object sender, EventArgs e)
    DirectoryInfo dir = new DirectoryInfo(@"D:\Material\Emoticons");
    foreach (FileInfo file in dir.GetFiles())
    try
    this.imageList1.Images.Add(Image.FromFile(file.FullName));
    catch
    Console.WriteLine("This is not an image file");
    this.listView1.View = View.LargeIcon;
    this.imageList1.ImageSize = new Size(32, 32);
    this.listView1.LargeImageList = this.imageList1;
    this.listView2.LargeImageList = this.imageList1;
    //or
    //this.listView1.View = View.SmallIcon;
    //this.listView1.SmallImageList = this.imageList1;
    for (int j = 0; j < this.imageList1.Images.Count; j++)
    ListViewItem item = new ListViewItem();
    item.ImageIndex = j;
    this.listView1.Items.Add(item);
    private void OnItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
    DoDragDrop(e.Item, DragDropEffects.Move);
    private void OnDragEnter(object sender,
    System.Windows.Forms.DragEventArgs e)
    if (!e.Data.GetDataPresent(typeof(ListViewItem)))
    e.Effect = DragDropEffects.None;
    return;
    var items = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
    if (items == null)
    e.Effect = DragDropEffects.None;
    else
    e.Effect = DragDropEffects.Move;
    private void OnDragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    ListViewItem items = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
    if (items != null)
    this.listView2.Items.Add((ListViewItem)items.Clone());
    Results:
    If you have any other concern regarding this issue, please feel free to let me know.
    Best regards,
    Youjun Tang
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • RE : Drag and Drop operations between two outlinefields

    Hi,
    Has any one tried the drag and drop operations between two Outline widgets ina
    window.Any help appreciated.
    Thanks
    balsubHi Balsub,
    Here are some lines which can help you :
    First of all, your 2 OutLineFields must be in a draggable state.
    In the event loop of your window, you have to listen to the event
    ObjectDrop
    on the 2 OutLineFields :
    When Self.<MyOutLine1>.ObjectDrop(SourceX = SourceX,
    SourceY = SourceY,
    SourceField = SourceField,
    TargetX = TargetX,
    TargetY = TargetY,
    TargetField = TargetField) do
    When Self.<MyOutLine2>.ObjectDrop(SourceX = SourceX,
    SourceY = SourceY,
    SourceField = SourceField,
    TargetX = TargetX,
    TargetY = TargetY,
    TargetField = TargetField) do
    Then, when you receive this event, the LocateNode() method will give you
    the DisplayNode which is beeing dragged :
    (assume that your OutLineFields are mapped to the class named :
    ClassOutLine,
    and Col is an Integer which is not important here)
    TheSourceLine : ClassOutLine;
    Col : Integer;
    TheSourceLine = (ClassOutLine)((OutLineField)(SourceField).LocateNode(X
    = SourceX,
    Y = SourceY,
    Column = Col));
    If you want to remove this line from the Source OutLineField :
    TheSourceLine.Parent = Nil;
    TheSourceLine.UpdateFieldFromData();
    If you want to insert this line at the end of the Target OutLineField :
    TheSourceLine.Parent = (OutLineField)(TargetField);
    TheSourceLine.UpdateFieldFromData();
    And if you want to insert this line before or after the Target line of
    the Target OutLineField :
    TheTargetLine : ClassOutLine;
    TheTargetLine = (ClassOutLine)((OutLineField)(TargetField).LocateNode(X
    = TargetX,
    Y = TargetY,
    Column = Col));
    TheTargetLine.PrevSibling = TheSourceLine; // Insert the source line
    before the target line
    or
    TheTargetLine.NextSibling = TheSourceLine; // Insert the source line
    after the target line
    TheTargetLine.UpdateFieldFromData();
    I hope this help you !
    - Manuel -
    Manuel Deveaux
    Forte Developer
    Mutuelle Pr&eacute;viade
    FRANCE
    E-Mail : [email protected]
    -----------------------------------------

    There is no configuration for it. It should work.
    Can you try it in a different user account. If it works in a different account, then it is likely something in your current user account that is messed up. If it doesn't work in another user account, then it is likely something with Mail, itself. 
    You could try downloading and installing the 10.6.7 combo update. That may repair what is wrong.

  • Drag and drop icons between regions

    I have two regions in a page. Each of the regions show employers available in different departments and each employer is represented with icons. is it possible to drag and drop employees between these two regions (departments) and finally save the latest changes made to the employes/deparments into the table?. any ideas are appreciated.
    thanks,
    Surya

    Yes it is possible, but not so easy. If you'll be at OOW this year, you can come to my session (S301752, Monday 13:00-14:00) - I will show something similar there. If you're not so lucky, you can read the excellent blogpost of my colleague at [http://rutgerderuiter.blogspot.com/2008/07/drag-planboard.html]
    Cheers
    Roel

  • How to drag and drop button between two toolbar?

    Hi,everybody :)
    i hava a problem :
    if i have two toolbar in a frame , and there are some button in each, how can i use dnd package to drag and drop button between two toolbar,such as drag one button in a toolbar to the other toolbar ,i write some sample code ,but find some difficult to finish
    can anyone give me some example code?
    Thanks!

    hi:)
    i have done it ,but there is another problem ,after i finish drag the button and drop it into the toolbar,if my mouse across the dragged button ,it will change the color ,can i setup any mathod to disappear the side_effect?
    thank u
    click open to show the other frame
    and the code is as follows:
    import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.dnd.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    public class buttondrag implements DragGestureListener, DragSourceListener,
    DropTargetListener, Transferable{
    static JFrame source = new JFrame("Source Frame");
    static JFrame target = new JFrame("Target Frame");
    static final DataFlavor[] supportedFlavors = { null };
    static {
    try {
         supportedFlavors[0] = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType);
    catch (Exception ex) {
         ex.printStackTrace();
    } Object object; // Transferable methods.
    public Object getTransferData(DataFlavor flavor) {
    if (flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType)) return object;
    else{
    return null;
    public DataFlavor[] getTransferDataFlavors() {
         return supportedFlavors;
    public boolean isDataFlavorSupported(DataFlavor flavor) {
         return flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType);
    } // DragGestureListener method.
    public void dragGestureRecognized(DragGestureEvent ev) {
    ev.startDrag(null, this, this);
    } // DragSourceListener methods.
    public void dragDropEnd(DragSourceDropEvent ev) { }
    public void dragEnter(DragSourceDragEvent ev) { }
    public void dragExit(DragSourceEvent ev) { }
    public void dragOver(DragSourceDragEvent ev) {
         object = ev.getSource();
    public void dropActionChanged(DragSourceDragEvent ev) { } // DropTargetListener methods.
    public void dragEnter(DropTargetDragEvent ev) { }
    public void dragExit(DropTargetEvent ev) { }
    public void dragOver(DropTargetDragEvent ev) { dropTargetDrag(ev); }
    public void dropActionChanged(DropTargetDragEvent ev) { dropTargetDrag(ev); }
    void dropTargetDrag(DropTargetDragEvent ev) { ev.acceptDrag(ev.getDropAction()); }
    public void drop(DropTargetDropEvent ev) {
         ev.acceptDrop(ev.getDropAction());
         try {
         Object target = ev.getSource();
         Object source = ev.getTransferable().getTransferData(supportedFlavors[0]);
         Component component = ((DragSourceContext) source).getComponent();
         Container oldContainer = component.getParent();
         Container container = (Container) ((DropTarget) target).getComponent();
         container.add(component);
         oldContainer.validate();
         oldContainer.repaint();
         container.validate();
         container.repaint();
         catch (Exception ex) {
              ex.printStackTrace();
              ev.dropComplete(true);
    public static void main(String[] arg) {
    JButton button = new JButton("Drag this button");
    JToolBar sbar = new JToolBar();
    JToolBar dbar = new JToolBar();
    JButton open_button = new JButton("Open");
    source.getContentPane().setLayout(null);
    source.setSize(new Dimension(400, 300));
    sbar.add(button);
    sbar.setBounds(new Rectangle(0, 0, 400, 31));
    sbar.add(open_button);
    open_button.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
    target.setVisible(true);
    source.getContentPane() .add(sbar);
    target.getContentPane().setLayout(null);
    target.setSize(new Dimension(400, 300));
    target.getContentPane().add(dbar);
    dbar.setBounds(new Rectangle(0, 0, 400, 31));
    dbar.add(new JButton("button1"));
    buttondrag dndListener = new buttondrag();
    DragSource dragSource = new DragSource();
    DropTarget dropTarget1 = new DropTarget(sbar, DnDConstants.ACTION_MOVE, dndListener);
    DropTarget dropTarget2 = new DropTarget(dbar, DnDConstants.ACTION_MOVE, dndListener);
    DragGestureRecognizer dragRecognizer1 = dragSource.createDefaultDragGestureRecognizer(button, DnDConstants.ACTION_MOVE, dndListener);
    source.setBounds(0, 200, 200, 200);
    target.setVisible(false);
    target.setBounds(220, 200, 200, 200);
    source.show();
    }

  • How to drag and drop files between two JFileChooser

    Sir i want to drag and drop files between two JFileChooser i don't know how to do that. So is there any reference code for that so that i can able to do it. I have enabled setDragEnabled(true) for both the jfilechooser now i don't now how to drop files in them means drag file from one jfilechooser and drop it to another JFileChooser,.
    Plz help me this is the requirement in my project.

    Note: This thread was originally posted in the [New To Java|http://forums.sun.com/forum.jspa?forumID=54] forum, but moved to this forum for closer topic alignment.

  • Drag and drop attachments between two email windows

    Hi together,
    my problem is easy. i cannot drag and drop attachements between two email windows using Apple Mail. On my old MBAir it was no problem. I do not know which configuration i have to change. To drag and drop to the desktob is no problem. Now i have to drop an attachement on the desktop to attach it to a new mail. This cannot be the solution :-)  Please help me.Thank you.
    Noobie :-)

    There is no configuration for it. It should work.
    Can you try it in a different user account. If it works in a different account, then it is likely something in your current user account that is messed up. If it doesn't work in another user account, then it is likely something with Mail, itself. 
    You could try downloading and installing the 10.6.7 combo update. That may repair what is wrong.

  • Regarding - Drag and Drop operations between two outlinefields

    Hi,
    Has any one tried the drag and drop operations between two Outline widgets in a window.Any help appreciated.
    Thanks
    balsub

    There is no configuration for it. It should work.
    Can you try it in a different user account. If it works in a different account, then it is likely something in your current user account that is messed up. If it doesn't work in another user account, then it is likely something with Mail, itself. 
    You could try downloading and installing the 10.6.7 combo update. That may repair what is wrong.

  • Mail attachment drag and drop issue

    Been facing serious mail attachment drag-and-drop issue since 10.8 (if not from 10.7) and was disappointed to find the same behaviour still in 10.9.
    When I drag and drop a picture file (from Finder for example) into a message window or onto the Mail.app Dock icon, the system's window management somehow gets confused: my next step is to click on the message window in order to start typing. However, the mouse click causes that very window to escape under all other open applications / windows. Further on, I dig under to find the escapee and click again: once more it escapes. This can go on for a few annoying rounds until gets solved in an unexplainable way. This behaviour in not consistent, but has happens in about 8 cases out of 10.
    Apart from Mail.app I do not experience drag and drop issues of any kind.
    Anyone else suffering from this?

    I'd be interested in the answer to this too.
    It only just started happening to me a day or so ago, about the time that I think I did an OS upgrade.
    I'm on OSX 10.8.2.
    Its annoying.
    I can drop and drag in Finder but it just affects email.

  • Drag and Drop issue from Explorer folder to Music Library

    Hello
    I just updated my iTunes to 8.0.0.20 but something unexpected happened. I can’t drag and drop anymore songs from an explorer folder into my music library when my view mode is set to Grid (Album, Artist, Genre or Composer).
    When I try I have a kind of interdiction circle under my pointer.
    I can only perform this operation in list mode view. Few hours ago it was still possible to perform it but not after I updated. I reinstalled my iTunes but the problem persists.
    I have read the forums I know I can add to my playlist as usual by using the menu. But is it possible to get drag and drop operation when I drags song directly from a folder on my explorer window?
    It would be very appreciated if someone has an answer. I really messed up my library trying to fix this

    I fixed the drag and drop issues I had! Turns out they were caused by the permission problems of Vista. To fix it I just made sure all the files in the iTunes folder and sub folders were full control by my account.
    Make sure you check the properties of the iTunes database specifically because before, the iTunes folder had the correct permissions but they hadn't actually been inherited correctly by the iTunes DB files. Hope this helps anyone else.

  • Drag and drop issue alternatives

    Hello
    i'm having the same drag and drop issue as the other guys here. basically cant drag and drop to the desktop. Im looking for a workaround that doesnt involve making temporary backups or repairing iphoto libraries. My library is 260gb and even though it is being backed up i dont have a spare 260gb.

    That does not exist - the workaround (maybe permanent solution - who knows) is
    File menu ==> export
    And BTW if you are not backingup all the time you are 100% guarenteed to lose all of your files and photos sooner or later
    LN

  • Drag and Drop items among JList

    Hi,
    I want to drag item from one JList and drop into another JList using JFrame in java Swing. Please provide me code for this.
    Thanks
    Nitin

    You need to implement a drag-and-drop (dnd) behaviour between your swing components.
    Like most programming tasks it looks harder than it really is. Basically you need a DragSource and a DropTarget with a Transferable object in between. This Transferable object is the object from your list.
    Here is Sun's tutorial on it... http://java.sun.com/docs/books/tutorial/dnd/
    Good luck.

  • How do I drag and drop files between computers when using Home Sharing in ITunes?

    How can I drag music files between computers while using Home Sharing? An older version of ITunes had a Home Sharing icon in the column browser near the playlist so it was easy to drag and drop.

    Hello cacalenni,
    Thanks for using the Apple Support Communities. I understand that you wish to learn how to import songs using Home Sharing in the new iTunes. The following resource should assist you in doing so:
    iTunes 12 for Mac: Use Home Sharing to import items from another iTunes library
    http://support.apple.com/kb/PH19614
    Cheers,
    Matt M.

  • Drag and drop issue, please help.

    I can no longer drag and drop photos within photoshop elements 12.  When working with a layer, I want to move it to a layer within another existing file, and no longer have the option.  The only way I have fixed the issue in the past is uninstall and reinstall the program.  I've read other forum posts and followed the instructions by resetting preferences and it does not work.
    Does anyone have any solutions to this issue?  Please help!

    With both files open, simplest to tile them side by side, you should be able to drag the layer from the source file onto the target file. So long as it shows the 'grasping hand' you can release the mouse and it should add the layer to the target.
    So what is happening now on your system? When you drag the layer to the target what icon is shown - 'grasping hand', 'no entry', something else?
    Cheers,
    Neale
    Insanity is hereditary, you get it from your children
    If this post or another user's post resolves the original issue, please mark the posts as correct and/or helpful accordingly. This helps other users with similar trouble get answers to their questions quicker. Thanks.

Maybe you are looking for

  • Account  requires an assignment to a CO object-very urgent

    Hi experts, I have 2 questions 1.while  doing transaction MI07 -post inv.differences its giving an errorr <b>Account requires an assignment to a Co object.</b> 2.while doing transactions called MIGO  for a particular PLANT its not trigerring an GL ac

  • Removal of Namesapce from generated target file in RFC to file Scenario

    I am working on RFC to File Scenario. In target file we are getting the target namespace also. we need to remove it from the target file but how? Thanks Anuj Agarwal

  • Mac Mail Messages List Not Scrolling Down to Reveal New Emails

    No, this is not a really huge deal but it's just annoying enough to warrant a question here - and it hasn't always operated this way so something must be going on. My inbox is telling me I've received mail properly, and the messages are definitely th

  • Stacks the hard way

    HI for this prblem i have to make a stack, but i have to program the stack the hard way and cant use any java predetermined stack things so here goes my problem. I ahve been given this node class public class Node { public String data; public Node ne

  • Alternate Items in a BOM

    I have a BOM for X which can make use of any component A or B or C in its BOM. The component A is always procured from China plant to the plant in India. I have set the usage probability of component A as 100 %. But in my case I would require a situa