javafx - 如何调整 Javafx 未装饰阶段的大小?

标签 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

最佳答案

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

    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 - 如何调整 Javafx 未装饰阶段的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106406/

相关文章:

javascript - 如何从 javaFX 的 fxml 内部的 JavaScript 调用 java 方法

JavaFX:如何将文本字段 "style property"绑定(bind)到匹配某些模式的文本属性

IntelliJ IDEA 中的 JAVA 11 和 JavaFX

JavaFx:是否可以检查元素是否具有特定的样式类?

java - 如何初始化其中的类和形状属性?

Javafx SSL 客户端配置以使用我的 Spring boot ssl 安全 Rest Api

java - 为什么此 FXML 应用程序中不显示 TreeView 根?

css - 如何将 CSS 样式表附加到 FXML?

Javafx 图像无法正确渲染

css - JavaFX:将 treetableview 展开箭头与行内容对齐