能够在屏幕上移动“未修饰”的应用程序窗口

时间:2013-05-12 11:29:36

标签: javafx-2 mouseevent draggable fxml scenebuilder

我正在使用JFX和JavaFX场景构建器构建预订系统应用程序。 我认为为了让它看起来更好我可以删除边框,或者如代码那样,将其设置为“未修饰”。现在我想通过单击场景并拖动它来将其拖动到屏幕上。我尝试了很多方法,但没有一个真正起作用。 我现在可以帮忙了。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

我正在使用场景构建器,这是我发现的 使用背景窗格移动未修饰的窗口。

@FXML
private Pane pane;

@Override
public void initialize(URL url, ResourceBundle rb) {
    pane.setOnMousePressed(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent t) {
            //System.out.println("Pressed");
            //System.out.println("Mouse : " + t.getX() + " | " + t.getY());
            mouse.setX(t.getX());
            mouse.setY(t.getY());
        }
    });
    pane.setOnMouseDragged(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent t) {
            //System.out.println("Dragged");
            //System.out.println("Mouse : " + t.getX() + " | " + t.getY());
            pane.getScene().getWindow().setX( t.getScreenX() - mouse.getX() - 14);
            pane.getScene().getWindow().setY( t.getScreenY() - mouse.getY() - 14);
        }
    });
}   

鼠标类:

public class Mouse {
    private double x = 0;
    private double y = 0;

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
}