调整 Canvas 大小以填充 JavaFX 中的封闭父级
查询围绕自动调整 Canvas 元素大小以适合 JavaFX 中其封闭父级 Stage 进行。实现这一点的关键是通过绑定和创建一个包裹 Canvas 的自定义 Pane。
创建 CanvasPane
要创建一个可调整大小的 Canvas,我们定义一个静态嵌套CanvasPane 类,它扩展了 Pane 并重写了layoutChildren() 方法。通过重写此方法,我们可以强制 Canvas 尺寸与其封闭的 Pane 相匹配。请注意,Canvas 本身无法调整大小,父级也无法自动调整其大小。
这是 CanvasPane 的 layoutChildren() 方法:
<code class="java">@Override protected void layoutChildren() { super.layoutChildren(); final double x = snappedLeftInset(); final double y = snappedTopInset(); final double w = snapSize(getWidth()) - x - snappedRightInset(); final double h = snapSize(getHeight()) - y - snappedBottomInset(); canvas.setLayoutX(x); canvas.setLayoutY(y); canvas.setWidth(w); canvas.setHeight(h); }</code>
使用 CanvasPane
在我们的主应用程序类中,我们将 Canvas 包装在 CanvasPane 中:
<code class="java">CanvasPane canvasPane = new CanvasPane(WIDTH, HEIGHT); canvas = canvasPane.getCanvas();</code>
使用 CanvasPane,Canvas 将自动调整大小以填充封闭的舞台。
其他注意事项
引用的 Stack Overflow 问题中接受的答案缺少此处所示的绑定。这种方法在 Canvas 与其父布局之间提供了更加无缝的集成。
以上是如何在 JavaFX 中自动调整画布大小以填充其父舞台?的详细内容。更多信息请关注PHP中文网其他相关文章!