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

最大化舞台后的场景最大化javafx

殳宸
2023-03-14

当我调整窗口大小时,舞台以及包含的场景会正确调整大小,但是当我单击最大化按钮时,只有舞台被最大化,而不是里面的场景。更糟糕的是,没有手动更改场景高度和宽度的方法(这些是只读的)。我还尝试创建新场景并将旧场景的根元素放在里面,但后来我得到了一个例外,即2个场景不能具有相同的根元素。谢谢!

最小可再现示例:

@Override
    public void start(Stage primaryStage) { 
        Group root = new Group();
        Scene scene = new Scene(root, 200, 250); 
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();

        primaryStage.maximizedProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue) {
                System.out.println("stage width: " + primaryStage.getWidth());
                System.out.println("scene width: " + scene.getWidth());
            }
        });

        primaryStage.widthProperty().addListener((obs, oldVal, newVal) -> {
            System.out.println("stage width: " + primaryStage.getWidth());
                System.out.println("scene width: " + scene.getWidth());

        });
    }

我标记了单击“最大化”的时刻。谢谢

共有1个答案

曹振
2023-03-14

正如@Slaw在评论中指出的那样,场景在舞台之后会被调整大小,所以听舞台尺寸变化是不起作用的。我应该听现场的变化。因此,正确的代码如下:

@Override
public void start(Stage primaryStage) { 
    Group root = new Group();
    Scene scene = new Scene(root, 200, 250); 
    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();

    scene.heightProperty().addListener((observable, oldValue, newValue) -> {
        System.out.println("stage height: " + primaryStage.getHeight());
        System.out.println("scene height: " + scene.getHeight());
    });

    scene.widthProperty().addListener((obs, oldVal, newVal) -> {
        System.out.println("stage width: " + primaryStage.getWidth());
        System.out.println("scene width: " + scene.getWidth());
    });
}

非常感谢!: D

 类似资料:
  • 问题内容: 我刚刚开始我的第二个JavaFX项目,我需要知道何时将a 最大化。在Swing中,这相当简单,可以通过使用WindowListener / Event来完成。但是,在搜索了JavaFX的Javadoc之后,我似乎找不到任何侦听a状态的方法。 有什么办法吗? 问题答案: 要了解是否最小化,可以听财产: 在即将发布的8.0版本中添加了对应的属性: 您可以在此处下载JDK 8(包括FX8)的

  • 我正在使用Javafx(没有使用FXML),我正在将阶段传递到a控制器中,以便在单击按钮时更改阶段上的场景。场景的变化是正确的,但是舞台和场景的尺寸增加了,它的尺寸增加了大约0.1(宽度),而高度有时也增加了(不是每次都增加)。 下面是正在使用的控制器。

  • 问题内容: 我正在使用Swing制作快速且肮脏的动画。我希望窗口最大化。我怎样才能做到这一点? 问题答案: 前提是您要扩展JFrame:

  • 问题内容: 我在这个小提琴中玩弄指令和绑定。我收到以下错误: 为什么会这样呢?我认为这与绑定有关。 问题答案: 这是因为它在每次经历摘要周期时都在创建一个全新的对象。监视在此数据绑定中注册,因此每次它评估一个新对象时都会创建它,因此它将与以前的值不同,从而触发另一个摘要循环。最终,它终止,因此不会无限循环。有关更详尽的说明,请参见http://docs.angularjs.org/guide/co

  • 问题内容: 我有一个python程序,它将打开一个新窗口以显示一些“关于”信息。该窗口有其自己的关闭按钮,而我已使其不可调整大小。但是,最大化和最小化按钮仍然存在,我希望它们消失。 我正在使用Tkinter,包装所有信息以显示在Tk类中。 到目前为止的代码如下。我知道它不是很漂亮,我打算将信息扩展到一个类中,但是我想在继续之前解决这个问题。 任何人都知道如何管理Windows管理器显示哪些默认按钮

  • 我一直试图从控制器打开一个新窗口以显示进度条: 请帮忙。没有例外,也没有错误。谢谢 编辑:我已经找到了它不显示的原因,这是因为在后面的代码中我有一个函数:阻止程序刷新我的场景和显示元素。是否有一种方法可以在后台或另一个线程中运行这一行(我以前从未使用过线程)再次感谢你的帮助。