JavaFX拖放;在网格窗格上放置事件

JavaFX拖放;在网格窗格上放置事件,java,drag-and-drop,javafx-8,gridpane,Java,Drag And Drop,Javafx 8,Gridpane,我尝试在网格窗格中执行拖放事件,但没有成功。检测到拖动,但未检测到拖动或拖放事件。我做错了什么 以下是我尝试的代码: 公共类FXMLDocumentController实现可初始化{ @FXML 私有网格; @凌驾 公共void初始化(URL、ResourceBundle rb){ StackPane sourcePane=新的StackPane(新文本(“源”)); StackPane targetPane=新的StackPane(新文本(“目标”)); 检测到sourcePane.setOn

我尝试在网格窗格中执行拖放事件,但没有成功。检测到拖动,但未检测到拖动或拖放事件。我做错了什么

以下是我尝试的代码:

公共类FXMLDocumentController实现可初始化{
@FXML
私有网格;
@凌驾
公共void初始化(URL、ResourceBundle rb){
StackPane sourcePane=新的StackPane(新文本(“源”));
StackPane targetPane=新的StackPane(新文本(“目标”));
检测到sourcePane.setOnDragDetected(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
sourcePane.startDragAndDrop(TransferMode.ANY);
System.out.println(“检测到阻力”);
event.consume();
}
});
setOnDragOver(新的EventHandler(){
@凌驾
公共无效句柄(DrageEvent事件){
event.acceptTransferModes(TransferMode.ANY);
System.out.println(“检测到拖拽”);
event.consume();
}
});
setOnDragDrop(新的EventHandler(){
@凌驾
公共无效句柄(DrageEvent事件){
event.acceptTransferModes(TransferMode.ANY);
System.out.println(“检测到跌落”);
event.consume();
}
});
添加(sourcePane,1,1);
grid.add(targetPane,0,1);
}        
}

您需要在after startDragAndDrop()中添加一些内容,例如:

sourcePane.setOnDragDetected(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
Dragboard db=sourcePane.startdragandrop(TransferMode.ANY);
ClipboardContent=新的ClipboardContent();
content.putString(“你好!”);
db.setContent(content);
System.out.println(“检测到阻力”);
event.consume();
}
});
请参阅Oracle在DrageEvent上的页面:

    sourcePane.setOnDragDetected(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            Dragboard db = sourcePane.startDragAndDrop(TransferMode.ANY);
            ClipboardContent content = new ClipboardContent();
            content.putString("Hello!");
            db.setContent(content);
            System.out.println("Drag detected");
            event.consume();
        }
    });