簡體   English   中英

在Java FX上檢測拖放事件?

[英]Detecting Drag and Drop event on Java FX?

我有一些Circle對象,我想在從圓圈拖動時加入Line

我開始使用此代碼來測試存在並結束拖放坐標:

Circle nodo = new Circle(15.0);
nodo.setOnDragDetected(new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent event) {
        coordenadas[0] = event.getX();
        coordenadas[1] = event.getY();
    }
});

nodo.setOnDragDropped(new EventHandler<DragEvent>() {

    @Override
    public void handle(DragEvent event) {
        coordenadas[2] = event.getX();
        coordenadas[3] = event.getY();
        System.out.println(coordenadas);
    }
});

當我嘗試拖動Circle時,當我放下鼠標時,沒有任何東西被打印到控制台。 什么是正確的方法,我應該如何在拖動上畫一條Line

要檢測拖放,請遵循以下方法:

        //
        // ON MOUSE PRESSED
        // ----------------------
        nodo.onMousePressedProperty().set(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                event.setDragDetect(true);
                nodo.setEffect(new DropShadow(10.0, Color.BLACK));
            }
        });

        //
        // ON MOUSE DRAGGED
        // ----------------------
        nodo.onMouseDraggedProperty().set(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                nodo.setEffect(new DropShadow(10.0, Color.BLUEVIOLET));

                /*
                final Circle indicator = new Circle(3);
                indicator.setStroke(Color.BLUEVIOLET);
                indicator.setCenterX(x);
                indicator.setCenterY(y);
                */

            }
        });

根據需要更改注釋部分。 在您的情況下,保存初始事件坐標(X,Y),並在“拖動”部分中,將它們用作線的初始坐標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM