gpt4 book ai didi

javafx - 如何将阶段大小调整与组件大小调整绑定(bind)在一起?

转载 作者:行者123 更新时间:2023-12-02 13:22:59 24 4
gpt4 key购买 nike

我有一个带有 FXML 的 JavaFX 2.0 应用程序。我希望在调整包含应用程序的窗口的大小时调整组件(文本字段、组合框、布局等)的大小。所以...

When building GUI applications with JavaFX, you will notice that certain classes in the API already implement properties. For example, the javafx.scene.shape.Rectangle class contains properties for arcHeight, arcWidth, height, width, x, and y. For each of these properties there will be corresponding methods that match the conventions previously described. For example, getArcHeight(), setArcHeight(double), arcHeightProperty(), which together indicate (to both developers and tools) that the given property exists.*

  • 要将监听器添加到舞台,我必须执行以下操作:

       stage.resizableProperty().addListener(new ChangeListener<Boolean>(){
    @Override
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){
    throw new UnsupportedOperationException("Not supported yet.");
    }

    });

所以有两个问题:

  • 为了进行一些绑定(bind),我必须在 Controller 类中获取我的阶段。那么 - 我怎样才能在 Controller 类中获得一个阶段?
  • 看起来 UI 控件没有任何宽度\高度属性来绑定(bind)到某些东西。或者也许我还没有找到它们。

那么,我该如何解决我的问题呢?

UPD。关于场景生成器 Sergey Grinev: 当我在组件上使用Ctrl+K(告诉它占据其父组件的整个区域)时 - 一切正常。

但是如果我想告诉我的组件占据一个区域的 50% 该怎么办?例如,我有一个选项卡,上面有两个 VBox。选项卡的宽度为100px。每个 Vbox 的宽度均为 50px。 VBox1 具有 x1=0x2=50,VBox2 具有 x1=50x2=100 。然后我使用 JavaFX 应用程序调整窗口大小。现在我的选项卡宽度 = 200px。但我的 VBox 宽度仍然 = 50px:VBox1 具有 x1=0x2=50,VBox2 具有 x1=150 x2=200。我需要它们是 VBox1 x1=0x2=100 和 VBox2 x1=100x2=200>。其中 x1 和 x2 值是 VBox 角点的坐标。

场景生成器在这种情况下如何帮助我?

最佳答案

关于构建可调整大小的 GUI 的一些建议 =>

  • 确保应用程序的根是 Pane 子类,而不是 Group。
  • 取消对按钮最大尺寸的限制(例如,button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE)。
  • 大多数时候,布局 Pane 可以为您处理大小调整,并且您不需要绑定(bind)和监听器 => 即仅在真正需要时才进行绑定(bind)。
  • UI 控件和布局 Pane 是区域 => 所有区域都有只读的高度和宽度属性,您可以监听和绑定(bind)。
  • 您不能直接将控件的高度和宽度属性绑定(bind)到另一个值。请改用 minWidth/Height、prefWidth/Height、maxWidth/Height 属性。
  • 场景具有高度和宽度属性,您可以根据需要绑定(bind)。如果这样做,当调整舞台大小时,场景的大小也会调整,然后绑定(bind)组件的大小也会调整。如果场景的根是布局 Pane 而不是组,则通常不需要此绑定(bind)。
  • 如果您没有在场景上设置高度和宽度,对于独立应用程序,场景(和舞台)的大小将调整为适合场景根节点的首选大小(这通常是您想要的) )。
  • 如果所有其他方法都失败,您可以开始重写 Parent 的layoutchildren 方法。

这里是an example一个可调整大小的 JavaFX UI,它实现了上述一些原则。

关于javafx - 如何将阶段大小调整与组件大小调整绑定(bind)在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com