如何调整Javafx未修饰阶段的大小? [英] How to resize Javafx undecorated stage?

查看:92
本文介绍了如何调整Javafx未修饰阶段的大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是JavaFX技术的新手,目前我正在研究javafx应用程序,该应用程序存在未修饰的阶段,我可以使用以下代码在屏幕上移动它,但是我无法从右下角调整此窗口的大小,任何人都可以向我建议解决方案.

I am new to JavaFX technology, currently I am working on javafx application, in which there is undecorated stage,I am able to move it on screen using below code , but I am not able to resize this window from bottom right corner, can anyone suggest me the solution.

public void loadPanel(final Stage stage) {

        myPane.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                xOffset = event.getSceneX();
                yOffset = event.getSceneY();
            }
        });
        myPane.setOnMouseDragged(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                stage.setX(event.getScreenX() - xOffset);
                stage.setY(event.getScreenY() - yOffset);
            }
        });


        this.stage = stage;
        this.stage.initStyle(StageStyle.UNDECORATED);
        this.stage.setScene(scene);
        this.stage.show();
    }

推荐答案

如果只想在右下角调整舞台大小,则首先需要if语句来检查鼠标是否在其中.除此之外,您还需要在dragFunction中区分是否是这种情况.如果是这种情况,则需要鼠标移动的值并将其添加到舞台的实际大小.代码(setOnMousePressed)中的值-10就像边框一样,因此您可以在更大的区域中单击以调整窗口大小.您可以根据需要调整此值. 此代码段可能会有所帮助:

If you want to resize your stage only on bottom right corner, you need at first an if statement to check, whether your mouse is there. In addition to this you need to distinguish in your dragFunction whether this is the case or not. If this is the case, you need the value your mouse moved and add this to the actuall size of your stage. The value -10 in the code (setOnMousePressed) is like a border so that you have a bigger area where you can click to resize the window. You can adjust this value like you want. This code snippets may be helpful:

    private Boolean resizebottom = false;
    private double dx;
    private double dy;

    myPane.setOnMousePressed(new EventHandler<MouseEvent>() {
        public void handle(MouseEvent event) {
            if (event.getX() > stage.getWidth() - 10
                    && event.getX() < stage.getWidth() + 10
                    && event.getY() > stage.getHeight() - 10
                    && event.getY() < stage.getHeight() + 10) {
                resizebottom = true;
                dx = stage.getWidth() - event.getX();
                dy = stage.getHeight() - event.getY();
            } else {
                resizebottom = false;
                xOffset = event.getSceneX();
                yOffset = event.getSceneY();
            }
        }
    });

    myPane.setOnMouseDragged(new EventHandler<MouseEvent>() {
        public void handle(MouseEvent event) {
            if (resizebottom == false) {
                stage.setX(event.getScreenX() - xOffset);
                stage.setY(event.getScreenY() - yOffset);
            } else {
                stage.setWidth(event.getX() + dx);
                stage.setHeight(event.getY() + dy);
            }
        }
    });

这篇关于如何调整Javafx未修饰阶段的大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆