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();
}
});