RFR: 8141391: DnD doesn't work for JFXPanel

Andy Goryachev angorya at openjdk.org
Fri Jul 11 15:31:45 UTC 2025


On Fri, 11 Jul 2025 04:17:24 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> Issue is when `JFXPanel `is used to embed some JavaFX components and when we drag something from swing or an external application and try to drop on a JavaFX component inside the JFXPanel, it doesn't accept the drop showing "block" sign suggesting DnD is blocked. 
> 
> The problem is in both drag and drop side of operations where `acceptDrag `and `acceptDrop `on `DropTargetDragEvent `is not called because `DragEvent constructor` called from `Scene `
> [which is called from `SwingDnD `via `EmbeddedSceneDTInterface.handleDragEnter` and `handleDragDrop] 
> `
> is not storing `state.acceptedTransferMode` when eventType is not `DragEvent.DRAG_DROPPED` or `DragEvent.DRAG_DONE` but Scene creates DragEvent with only `DragEvent.ANY`
>  so `handleDragEnter `and `handleDragDrop `returns null as `DragEvent.getAcceptedTransferMode` returns null
> 
> Fix is made so that instead of relying on return value of handleDragEnter/handleDragDrop  which seems to be always null for reason mentioned above, we rely on `isDataFlavorSupported `check for the drag and drop as is being done in JDK side of DnD scheme.
> Also, to have a proper drop of the data, we get the focus owner from the JFXPanel scene and insert the text in the location pointed to by the mouse cursor.
> 
> Regression test is already present in tests/manual/swing/DragDropOntoJavaFXControlInJFXPanelTest.java

modules/javafx.swing/src/main/java/com/sun/javafx/embed/swing/SwingDnD.java line 203:

> 201:                         javafx.embed.swing.JFXPanel jfxPanel = (javafx.embed.swing.JFXPanel)comp;
> 202: 
> 203:                         if (jfxPanel.getScene().getFocusOwner() instanceof javafx.scene.control.TextField tf) {

This cannot possibly work:

a) does not build
b) what if the drop target is not a TextField, but some other editable text component (a TextArea or a rich text editor of some sort)?

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1843#discussion_r2201031586


More information about the openjfx-dev mailing list