gpt4 book ai didi

javafx-2 - 在 javafx 2 中移动未装饰的舞台

转载 作者:行者123 更新时间:2023-12-02 13:37:18 24 4
gpt4 key购买 nike

我一直在尝试使用以下鼠标监听器在屏幕上移动未装饰的舞台:

  • 按下时
  • 发布
  • onDraged

这些事件来自一个矩形。我的想法是移动未修饰的窗口,单击矩形并拖动所有窗口。

@FXMLprotected void onRectanglePressed(MouseEvent event) {    X = primaryStage.getX() - event.getScreenX();    Y = primaryStage.getY() - event.getScreenY();}@FXMLprotected void onRectangleReleased(MouseEvent event) {    primaryStage.setX(event.getScreenX());    primaryStage.setY(event.getScreenY());}@FXMLprotected void onRectangleDragged(MouseEvent event) {    primaryStage.setX(event.getScreenX() + X);    primaryStage.setY(event.getScreenY() + Y);}

我对这些事件的了解是,当我按下矩形并开始拖动窗口时,它会移动一点。但是,当我释放按钮时,窗口将移动到矩形所在的位置。

提前致谢。

最佳答案

我创建了一个sample一个未装饰的窗口中的动画时钟,您可以在其中拖动。

示例中的相关代码是:

// allow the clock background to be used to drag the clock around.
final Delta dragDelta = new Delta();
layout.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
// record a delta distance for the drag and drop operation.
dragDelta.x = stage.getX() - mouseEvent.getScreenX();
dragDelta.y = stage.getY() - mouseEvent.getScreenY();
}
});
layout.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
stage.setX(mouseEvent.getScreenX() + dragDelta.x);
stage.setY(mouseEvent.getScreenY() + dragDelta.y);
}
});

...

// records relative x and y co-ordinates.
class Delta { double x, y; }

代码看起来与您的非常相似,因此不太确定为什么您的代码不适合您。

关于javafx-2 - 在 javafx 2 中移动未装饰的舞台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com