2017-08-29 44 views
0

標題解釋它。有沒有辦法使它MOUSE_DRAGGED不會觸發,直到它移動10個像素JavaFX

所以我有一個應用程序,當它沒有被掩蓋和完整的時候,它會變成1/2不透明度。此應用程序是StageStyle.TRANSPARENT,並在用戶拖動鼠標時四處移動。

我想知道是否有辦法讓鼠標在觸發拖動事件之前必須拖動一定數量的像素?

下面是代碼

moveWindowTemp dragDelta = new moveWindowTemp(); 
    primaryScene.addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> { 
     dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX(); 
     dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY(); 
    }); 

    primaryScene.addEventFilter(MouseEvent.MOUSE_DRAGGED, mouseEvent -> { 
     primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x); 
     primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y); 
     isBeingMoved = true; 
    }); 
    primaryScene.addEventFilter(MouseEvent.MOUSE_RELEASED, mouseEvent -> { 
     primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x); 
     primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y); 
     isBeingMoved = false; 
    }); 
... 
    public class moveWindowTemp { 
     double x, y; 
    } 

回答

0

如果我正確理解你的問題,你可以簡單地將事件作爲你的事件過濾器被消耗。 https://docs.oracle.com/javase/8/javafx/events-tutorial/filters.htm#BCFDCCEJ

+0

此鏈接可能更相關:https://docs.oracle.com/javase/8/javafx/events-tutorial/filters.htm#BCFDCCEJ(相同的教程,已更新爲JavaFX 8) – Itai

+0

謝謝。不知道爲什麼谷歌總是首先提出這個老東西。我已經更新了上面的鏈接。 – mipa

+0

這似乎是我想要的。我現在無法訪問該應用程序,我會檢查您所說的內容,如果我能夠正常工作,我會將您標記爲正確的 –

相關問題