2016-03-22 28 views
0

'da 0 değerini döndürüyor Ağacı görüntülemek zorunda olduğum bir uygulama üzerinde çalışıyorum. Ben başladım: Graph Visualisation (like yFiles) in JavaFX. Ağaç görüntülenir, ancak ButtonWell veya getBoundsInLocal, getBoundsInParent, getLayoutBounds 0 döndürür ve getPrefWidth -1 döndürür.Düğmenin genişliği belirlenemiyor çünkü getWidth(), JavaFx

Düğmenin genişliğini ve yüksekliğini nasıl alabilirim?

+0

Bu yöntemleri ne zaman çağıracaksınız? Düzeni gerçekleştirmeden önce onları çağırırsanız (genellikle yalnızca UI ekrana işlendiğinde gerçekleşir), sıfır boyutlarını verir. (Muhtemelen bir [MCVE] göndermeye yardımcı olur.) –

+0

Bunun bir kopyası şöyle olabilir: [JavaFX'te bir düğümün yüksekliğini alın (bir düzen geçişi oluşturur)] (http://stackoverflow.com/questions/ 26152642/get--yüksekliği-a-düğüm-in-javafx-üretmek-a-düzen geçiren). – jewelsea

cevap

1

Sahne gösterilmeden önce bileşenleri eklemeniz ve aşama gösterildikten sonra değerleri almanız gerekir, i. E .: Bir Platform.runLater i içine grafik oluşturulduktan sonra ne olursa olsun çağırabileceği bir alternatif olarak

public void start(Stage primaryStage) { 
    BorderPane root = new BorderPane(); 

    graph = new Graph(); 

    addGraphComponents(); 

    root.setCenter(graph.getScrollPane()); 

    Scene scene = new Scene(root, 1024, 768); 
    scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 

    Layout layout = new RandomLayout(graph); 
    layout.execute(); 

    for(Cell cell: graph.getModel().getAllCells()) { 
     System.out.println(cell + ": " + cell.getBoundsInParent()); 
    } 

} 

. e .:

Platform.runLater(() -> { 
    for(Cell cell: graph.getModel().getAllCells()) { 
     System.out.println(cell + ": " + cell.getBoundsInParent()); 
    } 
}); 
+1

Cevabınız için teşekkür ederiz. Bunu denedim ve ikinci versiyonu Platform.runLater ile çalıştı, ancak eski sadece minX/minY için sıfır olmayan değerlere sahipti. – Andrew