-
Bug
-
Resolution: Fixed
-
P4
-
8, 9
-
b25
-
x86_64
-
windows_7
FULL PRODUCT VERSION :
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
We have a swing application. It uses JFXPanel to embed some JavaFX components (mainly WebView). 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.
REGRESSION. Last worked in version 7u76
ADDITIONAL REGRESSION INFORMATION:
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the sample application drag the "Drag me" label and try to drop it in the second text box.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The text box excepts the drop.
ACTUAL -
The text box doesn't except the drop.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragSource;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class DnDTest {
public static void main(final String... pArguments) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("DnDTest");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JRootPane rootPane = frame.getRootPane();
rootPane.setLayout(new FlowLayout());
JLabel label = new JLabel("Drag me");
label.setTransferHandler(new TransferHandler() {
@Override
protected Transferable createTransferable(final JComponent pComponent) {
return new StringSelection("Drag text");
}
@Override
public int getSourceActions(final JComponent pComponent) {
return DnDConstants.ACTION_COPY;
}
});
MouseAdapter dragGestureRecognizer = new MouseAdapter() {
private Point mPoint;
@Override
public void mousePressed(MouseEvent pEvent) {
mPoint = pEvent.getPoint();
}
@Override
public void mouseReleased(MouseEvent pEvent) {
mPoint = null;
}
@Override
public void mouseDragged(MouseEvent pEvent) {
if (mPoint == null) {
mPoint = pEvent.getPoint();
}
double distance = pEvent.getPoint().distance(mPoint);
if (distance > DragSource.getDragThreshold()) {
JComponent component = (JComponent) pEvent.getComponent();
TransferHandler transferHandler = component.getTransferHandler();
transferHandler.exportAsDrag(component, pEvent, DnDConstants.ACTION_COPY);
}
}
};
label.addMouseListener(dragGestureRecognizer);
label.addMouseMotionListener(dragGestureRecognizer);
rootPane.add(label);
rootPane.add(new JTextField("Drop works here"));
final JFXPanel panel = new JFXPanel();
Platform.runLater(new Runnable() {
@Override
public void run() {
TextField textField = new TextField("Drop doesn't work here");
HBox hBox = new HBox();
HBox.setHgrow(textField, Priority.ALWAYS);
Scene scene = new Scene(hBox);
hBox.getChildren().add(textField);
panel.setScene(scene);
}
});
rootPane.add(panel);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
---------- END SOURCE ----------
=========================================================
KCR: Updated on 2025-07-15
EVALUATION: The above program is in error, as was the manual test program checked into our repo. We are going to repurpose this bug to fix the manual test program.
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
We have a swing application. It uses JFXPanel to embed some JavaFX components (mainly WebView). 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.
REGRESSION. Last worked in version 7u76
ADDITIONAL REGRESSION INFORMATION:
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the sample application drag the "Drag me" label and try to drop it in the second text box.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The text box excepts the drop.
ACTUAL -
The text box doesn't except the drop.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragSource;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class DnDTest {
public static void main(final String... pArguments) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("DnDTest");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JRootPane rootPane = frame.getRootPane();
rootPane.setLayout(new FlowLayout());
JLabel label = new JLabel("Drag me");
label.setTransferHandler(new TransferHandler() {
@Override
protected Transferable createTransferable(final JComponent pComponent) {
return new StringSelection("Drag text");
}
@Override
public int getSourceActions(final JComponent pComponent) {
return DnDConstants.ACTION_COPY;
}
});
MouseAdapter dragGestureRecognizer = new MouseAdapter() {
private Point mPoint;
@Override
public void mousePressed(MouseEvent pEvent) {
mPoint = pEvent.getPoint();
}
@Override
public void mouseReleased(MouseEvent pEvent) {
mPoint = null;
}
@Override
public void mouseDragged(MouseEvent pEvent) {
if (mPoint == null) {
mPoint = pEvent.getPoint();
}
double distance = pEvent.getPoint().distance(mPoint);
if (distance > DragSource.getDragThreshold()) {
JComponent component = (JComponent) pEvent.getComponent();
TransferHandler transferHandler = component.getTransferHandler();
transferHandler.exportAsDrag(component, pEvent, DnDConstants.ACTION_COPY);
}
}
};
label.addMouseListener(dragGestureRecognizer);
label.addMouseMotionListener(dragGestureRecognizer);
rootPane.add(label);
rootPane.add(new JTextField("Drop works here"));
final JFXPanel panel = new JFXPanel();
Platform.runLater(new Runnable() {
@Override
public void run() {
TextField textField = new TextField("Drop doesn't work here");
HBox hBox = new HBox();
HBox.setHgrow(textField, Priority.ALWAYS);
Scene scene = new Scene(hBox);
hBox.getChildren().add(textField);
panel.setScene(scene);
}
});
rootPane.add(panel);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
---------- END SOURCE ----------
=========================================================
KCR: Updated on 2025-07-15
EVALUATION: The above program is in error, as was the manual test program checked into our repo. We are going to repurpose this bug to fix the manual test program.
- duplicates
-
JDK-8088234 JFXPanel: Assertion error when building a Drag and Drop capable TableView in embedded JFXPanel
-
- Closed
-
- links to
-
Commit(master) openjdk/jfx/99866ae1
-
Review(master) openjdk/jfx/1843