How to prepare list for garbage collection after drag and drop operation

Hi all

I have a view in a mobile application that contains a list with the help of drag / move. The problem I encounter is that the NativeDragManagerImpl maintains a reference to this list in its _dragInitiator and _relatedObject properties. It is not a memory leak by - say, because the reference will be replaced the next time make drag and drop is used, however, my view that preclude any garbage collection, causing an unacceptable peak memory.

Here is an example which illustrates the problem (app default AIR using Flex 4.5.1):

Main.MXML

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="*"
                                                     xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" width="800"
                                                     height="600">


          <fx:Script>
                    <![CDATA[
                              protected function start_clickHandler(event:MouseEvent):void
                              {
                                        var element:ListGroup = new ListGroup();
                                        this.panel.addElement(element);
                              }

                              protected function stop_clickHandler(event:MouseEvent):void
                              {
                                        this.panel.removeAllElements();
                              }
                    ]]>
          </fx:Script>


          <s:Panel id="panel" top="100" left="100" bottom="100" right="100" title="Drag Drop Test">
                    <s:controlBarContent>
                              <s:Button label="Start" click="start_clickHandler(event)" />
                              <s:Button label="Clear" click="stop_clickHandler(event)" />
                    </s:controlBarContent>
          </s:Panel>


</s:WindowedApplication>

ListGroup.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
                     xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%">
          <s:layout>
                    <s:HorizontalLayout />
          </s:layout>
          <s:List id="sourceList" width="100%" height="100%" dragEnabled="true" dragMoveEnabled="true" dropEnabled="true">
                    <s:dataProvider>
                              <s:ArrayCollection>
                                        <fx:String>Item 1</fx:String>
                                        <fx:String>Item 2</fx:String>
                                        <fx:String>Item 3</fx:String>
                                        <fx:String>Item 4</fx:String>
                              </s:ArrayCollection>
                    </s:dataProvider>
          </s:List>
          <s:List id="targetList" width="100%" height="100%" dragEnabled="true" dragMoveEnabled="true" dropEnabled="true">
          </s:List>
</s:Group>

If you drag items to the list on the right, there is always at least one instance of ListGroup stuck in memory for the duration of execution (as seen in the profiler).

Is there a way to perform cleanup on the DragManager (or in fact the underlying DragManagerImpl) upward to a time of my choosing? Thoughts or ideas will be greatly appreciated!

Thanks a lot for your time!

I think I'd be monkey-patch NativeDragManagerImpl.  And create a bug report.

Tags: Flex

Similar Questions

  • How to create the Table using the column Drag and Drop feature

    Hello:
    I'm new to Data Modeler tool Oracle SQL dev and would like to know if there is a way to create a new table by reusing existing columns or groups of columns. The idea is to maintain consistency and save time of table design. If the columns created previously can be reused and require, drag and drop column in the right pane, then only new columns must be created manually.

    Any thoughts on this will be appreciated.

    Thank you!

    Yes - just change the name of the model table in the script (t_name = "table_template") then save this new transformation for later use.

    I don't know how to apply only some of the tables. Seems like something you could do to a secondary view level?

    Perhaps someone else on the forum can advise how to change the script to work on a subview only instead of the whole model.

  • How to go to the next slide during Drag and Drop

    I'm trying to go automatically to the next slide after the user makes a three 'drop zone' drag and drop.

    I see the action on the successes in the Panel. I chose to go to the next slide, but nothing happens after I have test.

    I also put in place the right answers for the drop areas three and thought that could trigger the part of "success."

    but still nothing happens.

    Any thoughts?

    Hi again,

    I understand, but in order to move to the next slide automatically the drag and drop must be introduced. It doesn't matter whether or not you include your drag and drop in a quiz. The option to send automatic drag / move it will include not a quiz, is to check if the answers are correct or not. You can leave to include it in an unchecked quiz.

    Thank you!

  • Newbie request for assistance with several drag-and-drop &amp; multiple targets

    I know that this question has been asked a million times, but I get always very well the solution.  I know that the solution called for me the use of tables in a part of my code, but I have problems understanding how to implement it.  I use Flash CS 5.5 with AS3.

    I have a flash drag-and-drop file which is divided into 4 distinct zones on the stage.  On each box, there are 7 places, for 7 different "puzzle pieces".  The first two spaces on each quadrant have very a very specific order for the correct puzzle pieces, while the 5 additional places on each quadrant also have specific parts, but the order is not important.  I have included my code below for reference (note that I have not all instances, finished yet).

    Basically, in code that's been created, the following bodies have specific targets with specific command:

    D1_1_mc, D1_2_mc, D1_1_mc, D2_2_mc, D3_1_mc, D3_2_mc, D4_1_mc and D4_2_mc.

    All other instances, such as D1_3_mc, D2_3_mc, D2_4_mc, etc. have specific quadrants on which they need to fall, but what about the last 5 'spaces' in each quadrant, the order does not matter.  I know that I can continue to do what I do, but I would have preferred that the last 5 pieces on each quandrant do not have to be in a specific order.

    You can provide any assistance is greatly appreciated!

    var startX:Number;

    var startY: number;

    var counter: Number = 0;

    D1_1_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D1_1_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D1_2_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D1_2_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D1_3_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D1_3_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D2_1_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D2_1_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D2_2_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D2_2_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D2_3_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D2_3_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D2_4_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D2_4_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D3_1_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D3_1_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D3_2_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D3_2_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D3_3_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D3_3_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D4_1_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D4_1_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D4_2_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D4_2_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D4_3_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D4_3_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    D4_4_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    D4_4_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    function pickUp(event:MouseEvent):void {}

    event.target.startDrag (true);

    reply_txt. Text = "";

    event.target.parent.addChild (event.target);

    startX = event.target.x;

    startY = event.target.y;

    }

    function dropIt(event:MouseEvent):void {}

    event.target.stopDrag ();

    var myTargetName:String = "target_" + event.target.name;

    var myTarget:DisplayObject = getChildByName (myTargetName);

    If (event.target.dropTarget! = null & & event.target.dropTarget.parent == myTarget) {}

    reply_txt. Text = "Good Job!"

    event.target.removeEventListener (MouseEvent.MOUSE_DOWN, Pick-up);

    event.target.removeEventListener (MouseEvent.MOUSE_UP, dropIt);

    event.target.buttonMode = false;

    Event.Target.x = myTarget.x;

    Event.Target.y = myTarget.y;

    counter ++;

    } else {}

    reply_txt. Text = "Try Again!";

    Event.Target.x = startX;

    Event.Target.y = startY;

    }

    if(Counter == 5) {}

    reply_txt. Text = "congratulations, you did!"

    }

    }

    D1_1_mc.buttonMode = true;

    D1_2_mc.buttonMode = true;

    D1_3_mc.buttonMode = true;

    D2_1_mc.buttonMode = true;

    D2_2_mc.buttonMode = true;

    D2_3_mc.buttonMode = true;

    D2_4_mc.buttonMode = true;

    D3_1_mc.buttonMode = true;

    D3_2_mc.buttonMode = true;

    D3_2_mc.buttonMode = true;

    D4_1_mc.buttonMode = true;

    D4_2_mc.buttonMode = true;

    D4_3_mc.buttonMode = true;

    D4_4_mc.buttonMode = true;

    Since it seems to afew possible gaps in the code you showed, and what I offer myself in response to your questions, I spent a little time get a working model of what I guess you just using the three targets and the fall of four objects.  If you want, I can make the file available for you, but for now, here's the code that works...

    var startX:Number;
    var startY: number;
    var counter: Number = 0;

    target_D2_1_mc.allowed = new Array (D2_1_mc);
    target_D2_2_mc.allowed = new Array (D2_2_mc);
    target_D2_3_mc.allowed = new Array (D2_3_mc, D2_4_mc);

    D2_1_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);
    D2_1_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);
    D2_2_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);
    D2_2_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);
    D2_3_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);
    D2_3_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);
    D2_4_mc.addEventListener (MouseEvent.MOUSE_DOWN, Pick-up);
    D2_4_mc.addEventListener (MouseEvent.MOUSE_UP, dropIt);

    function pickUp(event:MouseEvent):void {}

    reply_txt. Text = "Good Luck."
    event.target.startDrag (true);
    event.target.parent.addChild (event.target);
    startX = event.target.x;
    startY = event.target.y;
    }

    function dropIt(event:MouseEvent):void {}

    event.target.stopDrag ();

    If (event.target.dropTarget! = null & MovieClip (event.target.dropTarget.parent).allowed.indexOf (event.target) >-1) {}
    reply_txt. Text = "Good Job!"
    event.target.removeEventListener (MouseEvent.MOUSE_DOWN, Pick-up);
    event.target.removeEventListener (MouseEvent.MOUSE_UP, dropIt);
    event.target.buttonMode = false;
    Event.Target.x = MovieClip (event.target.dropTarget.parent) .x;
    Event.Target.y = there MovieClip (event.target.dropTarget.parent);
    counter ++;
    } else {}
    reply_txt. Text = "Try Again!";
    Event.Target.x = startX;
    Event.Target.y = startY;
    }

    if(Counter == 5) {}
    reply_txt. Text = "congratulations, you did!"
    }
    }

    D2_1_mc.buttonMode = true;
    D2_2_mc.buttonMode = true;
    D2_3_mc.buttonMode = true;
    D2_4_mc.buttonMode = true;

  • Why creates shortcuts for Moving files when drag and drop the folder or file in another folder?

    I am using Windows XP SP3, just before I drag and drop the file into another folder in my windows explore. Suddenly, he is creating shortcuts for moving file. I'm not able to move the file by drag / move the mouse, it is possible that by cutting and Paste(Ctrl+X) using the keyboard. Why?

    Maybe your 'Alt' key is stuck.
    See exchanging the keyboard with another makes all the difference.

    HTH,
    JW

  • Virtual PC for Windows 7 - How to drag-and - drop or transfer files

    I am trying to use Virtual PC for Windows 7 and be able to identify ways to transfer files from my host system in a virtual PC, I created.

    I was previously using Virtual PC (VPC) 2007 under Vista and am familiar with just the files dragging and droping to and from my host on the virtual computer system.

    I enabled the integration services and am unsure of what the user really wants that the VPC. that is he doesn't want configure me a Local user on the virtual machine or the host.

    I was able to connect to the virtual computer by using a local user on the computer virtual account, but for the life of me can not find out how to transfer files that I used to.

    To achieve what I need, I copy files to a shared location on my network as my PC and the virtual computer has access.

    Can anyone suggest how to get the 'integration' works correctly then drag and drop files between the Bureau of the VPC and host is possible.

    Thank you.

    Integration features allows the WVPC7 to share resources and readers. Open the virtual machine settings, and these options are available:

    1. Audio. Without integration, sounds played inside the virtual machine are emulated using a SoundBlaster 16 card. Audio output is fairly shrill and unpleasant to play using MP3s that imitated the sound card. With audio integration, sounds inside the VM are routed via Protocol Office remotely to your physical card. Audio output will be much better.
    2. Clipboard. Host OS and guest OS supported can share contents of the Clipboard.
    3. Printer. Applications within the virtual machine can print using your physical printer. This is useful if you have a parallel printer (LPT1). For USB printers, click on the "USB" menu on the toolbar of the virtual machine monitor, then attach your USB printer to your virtual machine.
    4. Smart cards. (I do not have any device of smart card, experts, please answer)
    5. Readers. Guest operating system can access and write files directly to your physical hard disks (or DVD or USB flash disk drive); is based on the physical disks, you have shared.

    For drag / drop, until today (2 July here) does not. I used to drag-and - drop files from my desktop windows vista to the desktop of the virtual machine (windows XP inside) you do, but now we can't. Another approach is to share your disks in has integration of options described above.

    After I shared my C: drive, a new 'shared' drive appeared in my virtual Windows XP [workstation], which is 'C on RYAN-PC' (the name may be different on your PC). Whenever I need to copy some files from my virtual computer on the desk of my windows 7, I just opened that shared drive, navigate to \\tsclient\C\Users\Ryan\Desktop\, copy the files and they come to my office windows 7.

    Personally I agree that even this method is simpler that the copy of the shared network files, drag-and - drop is much easier.

  • How to prepare photoshop for a class on campus instruction to learn Photoshop with my classmates?

    How to prepare photoshop for a class on campus instruction to learn Photoshop with my classmates?

    The 1st link I provided goes for installation instructions

    For questions on how to actually use the program, you go to this forum

    If you start the https://forums.adobe.com/welcome Forums Index

    You will be able to select a forum for the specific Adobe products you use

    Click on the symbol "arrow down" on the right (where it is said to see all our products and Services) to open the drop-down list and scroll

  • Display collection ArrayCollection in a list and the ArrayCollection with Drag and Drop collection reorgnize

    I have an ArrayCollection collection created like this

    qaAC = new ArrayCollection();

    for (var i: int = 0; i < 10; ++ i) {}
    var o: Object = {question: ' what is "+ i +"? ", answer:" it's "+ i"};
    qaAC.addItem (o);
    }

    The ArrayCollection collection is an array of object that has properties "question" and "answer to" custimized.

    I want to put 'issues' in the ArrayCollection collection in a list. 'qaAC.question' does not return an array of questions for me.

    I have to extract the ArrayCollection collection to form a new String table, and use the new array as the dataProvider of the list of questions.

    Is there a way better and clean?

    My goal is to use a list to reorgnize an ArrayCollection collection that contains complex objects (not simple string) with Drag & Drop. Is this possible?

    Any suggestions?

    I put two lists in my example to show how the ArrayCollection collection could be displayed in two different ways. You don't have to have two lists if you do not need them.

    When you change the order of the list made with drag and drop, you change the order of the collection ArrayCollection qaAC, so all the controls that display the qaAC will also be updated to reflect the new order. You can test this in the example I posted earlier. Change the order in the list of question and you will see the order change also in the list of responses. This is because they are both bound to the same collection of ArrayCollection. If you want to behave independently, you need two separate ArrayCollections.

    Chris

  • How can I fix the "drag and drop" feature in Windows 7? It used to work, but now does not work, for no apparent reason!

    How can I fix the "drag and drop" feature in Windows 7?  It used to work, but now does not work, for no apparent reason!

    What happens when you try?  Make sure you drag the icon image and not the text of the name.

    If it still doesn't work there are some registry changes that can try to alleviate the problem.  But because the changes to the registry are tedious and dangerous, I recommend to leave the system to repair it for you.  Here's how:
    1. Type of restore in the search box of the start menu to find and open to restore system files and settings from a restore point.
    2. Click Next, choose a date before the problem started, then click Next once more.
    • This process only takes around 2 minutes and only restores your system files/settings: it will not affect any of your files, documents, photos, emails, or anything else.
    If the system restore does not resolve the problem try this to replace missing or corrupted system files.  Here's how:
    1. Type cmd into the start menu search box, and then press Ctrl-Shift-Enter to launch as administrator.
    2. At the command prompt to start the File System Check, type sfc/scannow .
  • I bought Adobe CC through my University, but once I started to install update 2015 yesterday, he said that I only had trials for programs like After Effects and Speedgrade. I am unable to redeem a subscription, because it was a unique thing going

    I bought Adobe CC through my University, but once I started to install update 2015 yesterday, he said that I only had trials for programs like After Effects and Speedgrade. I am unable to redeem a subscription, because it was a continuous single thing of educational personnel. What should I do?

    Thank you for your help. I spoke with one of your customer service representatives, and the question seems to have been based on accounts. I think it is resolved.

  • What systems the Pros use for the first, After Effects and SpeedGrade?

    I bought the complete creative cloud in the hope of a career for me in editing audio/visual. The problem is my system doesn't seem to be able to manage the software, especially when changing back and forth between the three programs mentioned above. In addition, my first project cannot export correctly. In addition, throughout its development the offbeat bad system. And that's after following all of the recommendations of preferences available under tutorials Adobe and elsewhere on the Web.

    Here is my system:

    SYX-P67A-C43: Intel Core i7 2600 (a unit of 8 strands) to 3.4 GHz with 8 GB of RAM (which will be soon 16) with a NVidia GTX 550 card, 1Gig of RAM.

    As you can see, it's well beyond what Adobe claims to be the minimum requirements. It is obviously NOT the case.

    What systems the Pros use (like the guys in the tutorials) for the first, After Effects and SpeedGrade? Give me accurate machines with all the specs so I can a price upward.

    Right now X 99 with DDR4 gives best performance for media applications of particular content with GPU acceleration. I suggest an I7 5960 X, 32 GB of DDR4 2666, 980GTX video card and Asus X 99 board with storage depends on the media. Far, who will perform the 2600 is old of 2 generations at this stage, which is only a Quad core with HT. The same X 99 tips can also manage the Xeons V3 if you upgrade the processor in the future for a larger load in real-time.

    Eric

    ADK

  • How to import or drag and drop photos into Windows Live Movie Maker?

    I'm unable to either import or drag and drop photos into Windows Live Movie Maker.  I just finished a movie and when I try to open a new project, I click on "Add photos and video", taking me to 'my pictures', but when I try to open him "add photos and video", the "file name" has so much history, it doesn't allow me to click on the location of my file.  How can I get rid of this story?  The first film was so easy, but this new project has been up to this impossible after about 7 hours of attempts.  Help, please!

    Hi Anniebp2,

    I think perhaps the best next step after all your efforts of trying to fix the program.  For this, since it is part of the Windows Essentials pack, you can go to the page Windows Essentials and re - download and re-install the package, which will update and fix the movie maker if necessary. I hope that this solves the problem for you. Please let me know how it goes.

  • Blank screen after an interaction drag-and - drop

    Hey, I'm back.

    I have a small question about a drag and drop interaction in Captivate 8. Right now, it's together to continue to the next slide after three failures (with a failure caption) or to display a success message about success, then move to the next slide. However, when I publish it, it goes to a white screen for a few seconds after I finish the drag and drop interaction and moves to the next slide. The rest of the slides have text entry areas, and none of them have the blank screen between them.

    No one knows what might happen? I feel like there is a setting I'm missing or something. I've attached screenshots of the slide settings and drag and drop settings. Please let me know if you need more information.

    dd settings.PNGslide settings.PNG

    Why have you changed the suspension point to such a very short 0.1 seconds, what is the idea behind this? Yesterday, I already warned another user that such short duration is not at all recommended. D & D slides have a lot of code built in, and you add an action on enter to hide the playback bar. How long lasts this slide altogether? The point of suspension is not visible on the timeline, but your change will cause this situation:

    • an active slide part is 0.1sec
    • the inactive part of the slide is the slide duration less 0.1 sec; If you have kept the slide to 3 seconds duration, which means, 2.9 seconds
    • When you click on the submit button and exhaustion of attempts are executed measures OnSuccess or OnFailure: both go out of reading in your case, and the playhead must continue on the timeline for 2.9secs
    • If your items are not timed for the rest of the slide but end before this end, at some point you will indeed see a slide "blank."
  • Interaction drag-and - drop - time after the presentation of the self.

    Captivate 8.0.1.242 - Windows 7 - 64 bit - SWF - sensitive Format format not


    I drag and drop interactions in my class. I allowed for the correct drag auto shipping option and file the response. But when I publish the course and run the course online, there is a delay after drag / drop the right answer. There is no sign of loading or whatever it is. Just a delay, then I see the next slide. Its strange to students they start clicking on random areas, thinking that they have made a mistake.


    I would like to know as to why there is this delay and how to remove it.



    Hello

    I think the problem is with Actions that are currently assigned to the interaction. If you look closely, you will probably find that the slide is a break to 1.5 seconds. And the action assigned to the right answer is probably "continue." This means that play resumes and it takes another 1.5 seconds to visit the next slide.

    Try changing the action "Go to the next slide" and the delay must be eliminated.

    See you soon... Rick

  • How to drag and drop nodes to tab between the components of the tab

    I'm working on this tutorial example ( feature drag - move in the JavaFX Applications |) JavaFX tutorials and Documentation 2 ). Based on the tutorial I want to drag tabs between two tabs. So far, I have managed to create this code, but I need help to complete the code.

    Source

    tabPane = new TabPane();
    Tab tabA = new Tab();
       Label tabALabel = new Label("Main Component");
    
    
    tabPane.setOnDragDetected(new EventHandler<MouseEvent>()
            {
                @Override
                public void handle(MouseEvent event)
                {
                    /* drag was detected, start drag-and-drop gesture*/
                    System.out.println("onDragDetected");
    
                    /* allow any transfer mode */
                    Dragboard db = tabPane.startDragAndDrop(TransferMode.ANY);
    
                    /* put a string on dragboard */
                    ClipboardContent content = new ClipboardContent();
                    content.put(DataFormat.PLAIN_TEXT, tabPane);
                    db.setContent(content);
    
                    event.consume();
                }
            });
    

    What is the correct way to insert the contents of the tab as an object? In the tutorial simple text is transferred. How do I change this line content.put(DataFormat.PLAIN_TEXT, tabPane); ?

    And what is the right way to insert the tab after that I drag the tab:

    Destination


    tabPane.setOnDragDropped(new EventHandler<DragEvent>()
            {
                @Override
                public void handle(DragEvent event)
                {
                    /* data dropped */
                    /* if there is a string data on dragboard, read it and use it */
                    Dragboard db = event.getDragboard();
                    boolean success = false;
                    if (db.hasString())
                    {
                        //tabPane.setText(db.getString());
                        Tab tabC = new Tab();
                        tabPane.getTabs().add(tabC);
                        success = true;
                    }
                    /* let the source know whether the string was successfully
                     * transferred and used */
                    event.setDropCompleted(success);
    
                    event.consume();
                }
            });
    



    I guess that this transfer is possible?

    REF javafx 2 - How to drag and drop nodes between the components of the tab - stack overflow tab

    I use a graphic (instead of text) for tabs and call setOnDragDetected on this chart. That way you know which tab is moved. There is no nice way to put the tab itself in the dragboard because it is not serializable (see https://javafx-jira.kenai.com/browse/RT-29082), so you'll want to probably just store currently slipped into a property tab.

    Here's a quick example; It only add the tab at the end of the existing tabs in the pane has fallen. If you want to insert it in the location that is closest to the actual drop you probably browse the tabs and find details of chart of each tab, or something.

    import java.util.Random;
    
    import javafx.application.Application;
    import javafx.beans.property.ObjectProperty;
    import javafx.beans.property.SimpleObjectProperty;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.control.Tab;
    import javafx.scene.control.TabPane;
    import javafx.scene.input.ClipboardContent;
    import javafx.scene.input.DragEvent;
    import javafx.scene.input.Dragboard;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.input.TransferMode;
    import javafx.scene.layout.StackPane;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    public class DraggingTabPane extends Application {
    
      private static final String TAB_DRAG_KEY = "tab" ;
      private ObjectProperty draggingTab ;
    
    @Override
      public void start(Stage primaryStage) {
      draggingTab = new SimpleObjectProperty<>();
      TabPane tabPane1 = createTabPane();
      TabPane tabPane2 = createTabPane();
      VBox root = new VBox(10);
      root.getChildren().addAll(tabPane1, tabPane2);
    
      final Random rng = new Random();
      for (int i=1; i<=8; i++) {
        final Tab tab = createTab("Tab "+i);
        final StackPane pane = new StackPane();
          int red = rng.nextInt(256);
          int green = rng.nextInt(256);
          int blue = rng.nextInt(256);
        String style = String.format("-fx-background-color: rgb(%d, %d, %d);", red, green, blue);
        pane.setStyle(style);
        final Label label = new Label("This is tab "+i);
        label.setStyle(String.format("-fx-text-fill: rgb(%d, %d, %d);", 256-red, 256-green, 256-blue));
        pane.getChildren().add(label);
        pane.setMinWidth(600);
        pane.setMinHeight(250);
        tab.setContent(pane);
        if (i<=4) {
          tabPane1.getTabs().add(tab);
        } else {
          tabPane2.getTabs().add(tab);
        }
      }
    
      primaryStage.setScene(new Scene(root, 600, 600));
      primaryStage.show();
      }
    
      public static void main(String[] args) {
      launch(args);
      }
    
      private TabPane createTabPane() {
        final TabPane tabPane = new TabPane();
        tabPane.setOnDragOver(new EventHandler() {
          @Override
          public void handle(DragEvent event) {
            final Dragboard dragboard = event.getDragboard();
            if (dragboard.hasString()
                && TAB_DRAG_KEY.equals(dragboard.getString())
                && draggingTab.get() != null
                && draggingTab.get().getTabPane() != tabPane) {
              event.acceptTransferModes(TransferMode.MOVE);
              event.consume();
            }
          }
        });
        tabPane.setOnDragDropped(new EventHandler() {
          @Override
          public void handle(DragEvent event) {
            final Dragboard dragboard = event.getDragboard();
            if (dragboard.hasString()
                && TAB_DRAG_KEY.equals(dragboard.getString())
                && draggingTab.get() != null
                && draggingTab.get().getTabPane() != tabPane) {
              final Tab tab = draggingTab.get();
              tab.getTabPane().getTabs().remove(tab);
              tabPane.getTabs().add(tab);
              event.setDropCompleted(true);
              draggingTab.set(null);
              event.consume();
            }
          }
        });
        return tabPane ;
      }
    
      private Tab createTab(String text) {
        final Tab tab = new Tab();
        final Label label = new Label(text);
        tab.setGraphic(label);
        label.setOnDragDetected(new EventHandler() {
          @Override
          public void handle(MouseEvent event) {
            Dragboard dragboard = label.startDragAndDrop(TransferMode.MOVE);
            ClipboardContent clipboardContent = new ClipboardContent();
            clipboardContent.putString(TAB_DRAG_KEY);
            dragboard.setContent(clipboardContent);
            draggingTab.set(tab);
            event.consume();
          }
        });
        return tab ;
      }
    }
    

Maybe you are looking for