无法访问JavaFX onDragOver事件
除onDragDetected和onDragDone外,我无法参加任何活动。我不知道为什么 我正在使用文本对象并尝试从一个文本对象拖动到另一个文本对象 运行程序后,我只能打印以下内容: 检测到Ondrag 昂德拉格敦 检测到Ondrag 我的最小可复制示例如下所示:无法访问JavaFX onDragOver事件,javafx,Javafx,除onDragDetected和onDragDone外,我无法参加任何活动。我不知道为什么 我正在使用文本对象并尝试从一个文本对象拖动到另一个文本对象 运行程序后,我只能打印以下内容: 检测到Ondrag 昂德拉格敦 检测到Ondrag 我的最小可复制示例如下所示: public class Main extends Application { @Override public void start(Stage stage) { stage.setTitle(&
public class Main extends Application {
@Override public void start(Stage stage) {
stage.setTitle("Hello Drag And Drop");
Group root = new Group();
Scene scene = new Scene(root, 400, 200);
scene.setFill(Color.LIGHTGREEN);
final Text source = new Text(50, 100, "DRAG ME");
source.setScaleX(2.0);
source.setScaleY(2.0);
final Text target = new Text(250, 100, "DROP HERE");
target.setScaleX(2.0);
target.setScaleY(2.0);
source.setOnDragDetected(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
/* drag was detected, start drag-and-drop gesture*/
System.out.println("onDragDetected");
/* allow any transfer mode */
Dragboard db = source.startDragAndDrop(TransferMode.ANY);
/* put a string on dragboard */
ClipboardContent content = new ClipboardContent();
content.putString(source.getText());
db.setContent(content);
event.consume();
}
});
target.setOnDragOver(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
/* data is dragged over the target */
event.acceptTransferModes(TransferMode.ANY);
System.out.println("onDragOver");
event.consume();
}
});
target.setOnDragEntered(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
System.out.println("onDragEntered");
event.consume();
}
});
target.setOnDragExited(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
System.out.println("onDragExited");
event.consume();
}
});
target.setOnDragDropped(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
System.out.println("onDragDropped");
event.consume();
}
});
source.setOnDragDone(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
System.out.println("onDragDone");
event.consume();
}
});
root.getChildren().add(source);
root.getChildren().add(target);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
公共类主扩展应用程序{
@覆盖公共无效开始(阶段){
stage.setTitle(“Hello拖放”);
组根=新组();
场景=新场景(根,400,200);
场景。设置填充(颜色。浅绿色);
最终文本源=新文本(50100,“拖动我”);
来源:setScaleX(2.0);
来源:setScaleY(2.0);
最终文本目标=新文本(250100,“放在这里”);
target.setScaleX(2.0);
target.setScaleY(2.0);
检测到source.setOnDragDetected(新的EventHandler(){
公共无效句柄(MouseeEvent事件){
/*检测到拖动,开始拖放手势*/
System.out.println(“onDragDetected”);
/*允许任何传输模式*/
Dragboard db=source.startDragAndDrop(TransferMode.ANY);
/*在拖板上放一根绳子*/
ClipboardContent=新的ClipboardContent();
content.putString(source.getText());
db.setContent(content);
event.consume();
}
});
target.setOnDragOver(新的EventHandler(){
公共无效句柄(DrageEvent事件){
/*将数据拖到目标上*/
event.acceptTransferModes(TransferMode.ANY);
System.out.println(“onDragOver”);
event.consume();
}
});
target.setOnDragEntered(新的EventHandler(){
公共无效句柄(DrageEvent事件){
System.out.println(“OndragEnter”);
event.consume();
}
});
target.setOnDragExited(新的EventHandler(){
公共无效句柄(DrageEvent事件){
System.out.println(“onDragExited”);
event.consume();
}
});
target.setOnDragDrop(新的EventHandler(){
公共无效句柄(DrageEvent事件){
System.out.println(“OnDragDrop”);
event.consume();
}
});
setOnDragDone(新的EventHandler(){
公共无效句柄(DrageEvent事件){
System.out.println(“onDragDone”);
event.consume();
}
});
root.getChildren().add(源);
root.getChildren().add(目标);
舞台场景;
stage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
您可以创建一个新的应用程序吗?当isI更新发布的代码时,我们可以复制、粘贴和运行它,以揭示整个示例@James_DIt对我的预期效果<代码>onDragDetected onDragEntered onDragOver(xN)OnDragDrop OnDragExit onDragDone我可以问一下您使用的是什么版本的JavaFX和Java吗?我使用的是JavaFX12和Java11.JavaFXV14和JDK11