minWidth(forHeight),minHeight(forWidth),......是什么意思?

时间:2017-01-03 22:30:34

标签: java javafx

我正在阅读javafx region online documentation并且遇到了minWidth(forHeight),minHeight(forWidth),getPrefWidth(forHeight),getPrefHeight(forWidth),getMaxWidth(forHeight),getMaxHeight(forWidth)等。基本上它是高度用于高度的宽度或宽度。我不知道这是什么意思。例如minWidth(forHeight)是什么意思?为什么有forHeight的括号?

非常感谢任何帮助或解释!

1 个答案:

答案 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()并在其上设置适当的约束就足够了,并且不必编写自己的布局区域。编写自己的布局区域可能会变得复杂,如果你考虑像插图和捕捉到像素之类的东西,所以通常它不值得麻烦,因为内置的布局窗格和控件实现自动处理这些复杂性。