获取JavaFX中节点的高度(生成布局传递)

获取JavaFX中节点的高度(生成布局传递)

如何获得JavaFX中节点的高度或偏好高度,我有3VBox我想将节点添加到最自由的面板中,例如:

           Childrens      Total Height of the children's(Sum)

VBoxA          5                     890

VBoxB          4                     610

VBoxC          2                     720

在这种情况下,最自由的是VBoxB,使用此方法计算最自由的窗格:

private int getFreerColumnIndex() {
    if(columns.isEmpty())
        return -1;

    int columnIndex = 0;
    int minHeight = 0;
    for(int i = 0; i < columns.size(); i++) {
        int height = 0;
        for(Node n : columns.get(i).getChildren()) {
            height += n.getBoundsInLocal().getHeight();
        }

        if(i == 0) {
            minHeight = height;
        } else if(height < minHeight) {
            minHeight = height;
            columnIndex = i;
        }

        if(height == 0)
            break;
    }

    return columnIndex;}

只有当我当时添加了一个元素时,此方法才能工作。但是如果我当时添加更多的元素:

for (int i = 0; i < 10; i++) {
    SomeNode r1 = new SomeNode ();
    myPane.addElement(r1);}

方法getFreerColumnIndex返回相同的索引。这是因为新的节点还没有在本地拥有优势。
所以这一行:

height += n.getBoundsInLocal().getHeight();

会回来0新节点。

有谁知道如何获得节点的最大能量吗?


额外:

SomeNode延展Node

myPane的addElement()方法:

public void addElement(final Node element) {
     index = getFreerColumnIndex();
     columns.get(index).getChildren().add(element);}

额外2:

假设我们有3个VBOX:在此之前:

 A      B      C |      |      |
        |      |
        |

跑:

for (int i = 0; i < 10; i++) {
    SomeNode r1 = new SomeNode ();
    myPane.addElement(r1);                      }

之后:

 A      B      C |      |      |
 |      |      |
 |      |
 |
 |
 |
 |
 |
 |
 |
 |

对,是这样:

 A      B      C |      |      |
 |      |      |
 |      |      |
 |      |      |
 |      |      |
 |

|=某个节点


UYOU
浏览 472回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java