如何调整Javafx未修饰阶段的大小?

时间:2014-06-08 12:59:57

标签: javafx fxml

我是JavaFX技术的新手,目前我正在开发javafx应用程序,其中有未修饰的阶段,我能够使用下面的代码在屏幕上移动它,但我无法从右下角调整此窗口的大小,任何人都可以向我推荐解决方案。

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();
    }

enter image description here

2 个答案:

答案 0 :(得分:4)

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

    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);
            }
        }
    });

答案 1 :(得分:0)

您可以将舞台设为公共静态并使用此代码并根据您的代码进行自定义:

stage1.setWidth(Your double value);
stage1.setHeight(Your double value);