当前位置: 首页 > 知识库问答 >
问题:

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

吕永嘉
2023-03-14

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

共有2个答案

后树
2023-03-14

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

stage1.setWidth(Your double value);
stage1.setHeight(Your double value); 
金钊
2023-03-14

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

    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舞台,我自己的最小化,最大化 有没有办法通过单击任务栏图标来最小化纯Java代码未修饰的阶段?如果不是的话,我该怎么做,比如说,JNA? 编辑:好的,我一直在尝试用JNA解决这个问题,但由于几乎没有C/C/JNA,我在设置这个方面有点麻烦。如果有人帮我把这些东西拼凑起来,我将不胜感激。。 到目前为止,这是我的代码: 编辑2:我最终在这一点上做得更进一步,但当我重新设置W

  • 我有一扇没有装饰的窗户: 我想知道我怎样才能把它做成一扇可拖动的未装饰窗户?我想在用户用鼠标右键选择窗口时更改其位置,然后在按住鼠标键的同时移动鼠标。 附言:我测试了这个解决方案,但它不起作用:

  • 我对全屏舞台有意见。我有一个主阶段,当应用程序启动时立即进入全屏,然后当用户调用特定事件时,我创建第二阶段,它也是全屏的,但它显示图像,其背景是透明的,所以主阶段及其内容仍然可见。 问题是当我显示这个新的舞台并将其设置为全屏模式时,它会使我的主舞台退出全屏模式并调整大小。 主要舞台的创作: 新阶段的创建:

  • 问题内容: 我有一个未经修饰的JavaFX Stage,还有我自己的最小化,最大化和关闭按钮。但不幸的是,与经过修饰的行为相比,在Windows 7中单击任务栏图标不会自动最小化该阶段。 通过单击任务栏图标,是否可以通过纯Java代码最小化未修饰的阶段?如果不是,我该如何使用JNA? 编辑: 好的,我一直在尝试使用JNA解决此问题,但是几乎没有C / C ++ / JNA完成,因此设置起来有些麻烦

  • 我有一个未装饰的舞台,里面有一个定制的标题栏。这个标题栏包含“图标按钮”,它们只是保存图像视图的堆叠窗格。 我还使用此代码通过标题栏(静态编程语言代码)使舞台可拖动: 现在的问题是,即使鼠标在其中一个“图标按钮”上,舞台也是可以拖动的。对于普通的JavaFX按钮,这似乎不是问题。我不明白为什么会这样,以及如何解决它。