我正在创建JavaFX应用程序,并且primaryStage是未修饰的,因此我实现了自己的拖放/关闭和最小化功能。一切正常,直到我将窗口拖到另一个监视器(更大)上。然后,拖动时窗口偶尔会侧向跳跃。 每当我在新显示器上拖动并且窗口不跳时,下拉列表就会被替换-就像只有下拉列表而不打开窗口一样。 因为了解我的问题可能并不容易,所以我做了一个gif。请原谅质量不佳,giphy和imgur都会严重降低其质量:https://giphy.com/embed/YmVmTiUxYVt1GTwyI2
这很可能是由于MousePressed-Event仅将偏移量设置了一次。在MouseDragged中再次调用它不起作用。
拖动窗口的代码:
menuBar.addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
xOffset = root.getScene().getWindow().getX() - e.getScreenX();
yOffset = root.getScene().getWindow().getY() - e.getScreenY();
});
menuBar.addEventFilter(MouseEvent.MOUSE_DRAGGED, e -> {
root.getScene().getWindow().setX(e.getScreenX() + xOffset);
root.getScene().getWindow().setY(e.getScreenY() + yOffset);
});
当拖动到新的监视器上时,窗口及其元素不应跳转。 是否有人对在监视器上拖动时如何检测监视开关/防止窗口跳动有想法? 感谢您的时间和帮助!