我正在阅读javafx region online documentation并且遇到了minWidth(forHeight),minHeight(forWidth),getPrefWidth(forHeight),getPrefHeight(forWidth),getMaxWidth(forHeight),getMaxHeight(forWidth)等。基本上它是高度用于高度的宽度或宽度。我不知道这是什么意思。例如minWidth(forHeight)是什么意思?为什么有forHeight的括号?
非常感谢任何帮助或解释!
答案 0 :(得分:1)
您可以在In Java, for a string x, what is the runtime cost of s.length()? Is it O(1) or O(n)? javdoc:
中找到答案public final double minWidth(double height)
在布局期间调用以确定此节点的最小宽度。 返回
computeMinWidth(forHeight)
的值,除非 应用程序通过设置minWidth覆盖最小宽度 属性。
想象一下,您希望在不小于16:9显示比例的区域中显示一个控件,然后computeMinWidth
的实现可能是:
protected double computeMinWidth(double height) {
return height * 16 / 9;
}
您永远不需要提供minWidth(height)
的实现,因为默认实现已经足够,并将调用您的自定义computeMinWidth(height)
函数。
背景资讯
除非您编写自己的布局处理代码(通常通过扩展Region::minWidth
并覆盖Region
),否则您不可能每次都使用Region::minWidth
方法。正如区域javadoc中所提到的,在编写自己的布局代码时,以及根据需要在layoutChildren()
方法调用layoutChildren()
方法中覆盖computePrefWidth(height)
更为常见。请注意,编写自己的布局处理代码并不常见,除非您编写自己的控件。通常,使用现有的prefWidth()
并在其上设置适当的约束就足够了,并且不必编写自己的布局区域。编写自己的布局区域可能会变得复杂,如果你考虑像插图和捕捉到像素之类的东西,所以通常它不值得麻烦,因为内置的布局窗格和控件实现自动处理这些复杂性。