Lesen Sie die Höhe eines Knotens in JavaFX (generieren Sie einen Layout-Durchgang)
Wie man die Höhe eines Knotens in JavaFX erhält oder bevorzugt, habe ich 3VBox
und ich möchte Knoten zum freiere Panel hinzufügen, Beispiel:
Childrens Total Height of the children's(Sum)
VBoxA 5 890
VBoxB 4 610
VBoxC 2 720
in diesem Fall ist das @ das freieVBoxB
, Ich berechne die freiere Scheibe mit dieser Methode:
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;
}
Diese Methode funktioniert nur, wenn ich gleichzeitig 1 Element hinzufüge. Aber wenn ich zur Zeit weitere Elemente hinzufüge:
for (int i = 0; i < 10; i++) {
SomeNode r1 = new SomeNode ();
myPane.addElement(r1);
}
die MethodegetFreerColumnIndex
gibt den gleichen Index zurück. Dies liegt daran, dass die neuen Knoten noch keine lokale Höhe haben.
Also diese Zeile:
height += n.getBoundsInLocal().getHeight();
wird zurückkehren0
mit den neuen Knoten.
Weiß jemand, wie man die Höhe eines Knotens ermittelt?
ExtraSomeNode
erstreckt sich vonNode
Method addElement () bei myPane:
public void addElement(final Node element) {
index = getFreerColumnIndex();
columns.get(index).getChildren().add(element);
}
Extra 2:Angenommen, wir haben 3 vbox: Vorher:
A B C
| | |
| |
|
Lauf
for (int i = 0; i < 10; i++) {
SomeNode r1 = new SomeNode ();
myPane.addElement(r1);
}
Nach
A B C
| | |
| | |
| |
|
|
|
|
|
|
|
|
Richti:
A B C
| | |
| | |
| | |
| | |
| | |
|
|
= Ein Knoten