gpt4 book ai didi

java - 为什么无法使用布局约束调整 Canvas 大小?

转载 作者:行者123 更新时间:2023-12-01 12:05:22 25 4
gpt4 key购买 nike

有一个AnchorPane,然后放一个Canvas。设置 Canvas 的布局约束(上、左、右、下)。从技术上讲,如果 AnchorPane 调整大小, Canvas 也应该调整大小。但事实并非如此。如果您使用按钮之类的东西而不是 Canvas ,它就可以工作。

为什么我无法使用布局约束调整 Canvas 大小?

最佳答案

首先:Canvas是Node的直接子类,并且不会重写Node.isResizes(),因此采用默认值:

public boolean isResizable() {
return false;
}

这只是一个技术解释,为什么父布局容器在布局计算期间会跳过 Canvas。

另一个考虑因素是 Canvas 和“普通”JavaFX Node 的内部工作方式完全不同。

在每次布局过程中(Parent.layoutChildren()Node.autosize()),Node 的布局都会重新计算为始终反射(reflect)正确的状态。还有许多其他因素(缓存提示、优化、可见状态、托管状态……)正在发挥作用,但这是这里非常基本的概念。

另一方面,Canvas 是一个 Node,它通过 GraphicsContext 将其所有“子项”绘制到白板上并完成。没有布局,没有自动调整大小。因此,这非常快(在初始绘制之后),如果您更改此设置,您应该知道您在做什么以及为什么要这样做,因为使 Canvas 可调整大小会剥夺许多好处。

但是有一个非常好的且快速的示例如何创建可调整大小的 Canvas :http://fxexperience.com/2014/05/resizable-grid-using-canvas/

关于java - 为什么无法使用布局约束调整 Canvas 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664951/

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