2017-10-02 2 views
0

Mein Code:JavaFx kann nicht der Knoten Szene relativen Koordinaten

Button btn1 = new Button("Button"); 
    Button btn2 = new Button("The second Button"); 


    VBox vbox = new VBox(); 
    vbox.getChildren().addAll(btn1,btn2); 
    Scene scene = new Scene(vbox, 300, 300); 

    System.out.println(btn2.getBoundsInLocal()); 
    System.out.println(btn2.getBoundsInParent()); 
    System.out.println(btn2.getLayoutBounds()); 
    System.out.println(btn2.layoutBoundsProperty()); 

Druck:

BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:0.0, height:0.0, depth:0.0, maxX:0.0, maxY:0.0, maxZ:0.0] 
BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:0.0, height:0.0, depth:0.0, maxX:0.0, maxY:0.0, maxZ:0.0] 
BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:0.0, height:0.0, depth:0.0, maxX:0.0, maxY:0.0, maxZ:0.0] 
ReadOnlyObjectProperty [bean: [email protected][styleClass=button]'The second Button', name: layoutBounds, value: BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:0.0, height:0.0, depth:0.0, maxX:0.0, maxY:0.0, maxZ:0.0]] 

Meine Frage ist: Wenn ich die btn1 von Koordinaten erhalten, die MinX und MinY ist 0, kann ich verstehen. aber über btn2 sollte der MinY nicht 0 sein; und MaxX und MaxY sollten auch nicht 0 sein. Wie kann ich also die echte Koordinate der linken Ecke der Schaltfläche in der VBox erhalten? Um klar zu sein, brauche ich die Koordinate des Knotens, der relativ zu VBox ist. Vielen Dank.

+1

Verschieben Sie Ihre 'System.out.println()' Anweisungen nach 'primaryStage.show()'. – Sedrick

+0

Größe und Position werden während eines Layoutdurchlaufs zugewiesen, was in Ihrem Code nicht aufgetreten ist. – fabian

Antwort

0

Ich glaube, Sie müssen die Eltern Grenzen erhalten und dann angeben, was Sie relativ zu denen wollen.

System.out.println(btn2.getBoundsInParent().getY()); 
System.out.println(btn2.getBoundsInParent().getX()); 
Verwandte Themen