【问题标题】:JavaFX Drag&Drop events on Gridpanes网格窗格上的 JavaFX 拖放事件
【发布时间】:2015-08-14 09:06:07
【问题描述】:

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

这是我试过的代码:

public class FXMLDocumentController implements Initializable {

    @FXML
    private GridPane grid;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        StackPane sourcePane = new StackPane(new Text("Source"));    
        StackPane targetPane = new StackPane(new Text("Target"));        

        sourcePane.setOnDragDetected(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                sourcePane.startDragAndDrop(TransferMode.ANY);
                System.out.println("Drag detected");
                event.consume();
            }
        });


        targetPane.setOnDragOver(new EventHandler<DragEvent>() {
            @Override
            public void handle(DragEvent event) {
                event.acceptTransferModes(TransferMode.ANY);
                System.out.println("Drag over detected");
                event.consume();
            }
        });

        targetPane.setOnDragDropped(new EventHandler<DragEvent>() {
            @Override
            public void handle(DragEvent event) {
                event.acceptTransferModes(TransferMode.ANY);
                System.out.println("Drop detected");
                event.consume();
            }
        });

        grid.add(sourcePane, 1, 1);
        grid.add(targetPane, 0, 1);
    }        
}

【问题讨论】:

    标签: java drag-and-drop javafx-8 gridpane


    【解决方案1】:

    您需要在 startDragAndDrop() 之后添加一些内容,例如。 :

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

    查看 Oracle 关于 DragEvent 的页面:
    https://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/DragEvent.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      相关资源
      最近更新 更多