无法确定按钮的宽度,因为getWidth()在JavaFx中返回0

时间:2016-03-22 22:54:55

标签: javafx

我正在开发一个必须显示树的应用程序。我从:Graph Visualisation (like yFiles) in JavaFX开始。显示树,但是对于ButtonCell调用方法getWidth或getBoundsInLocal的任何变体,getBoundsInParent,getLayoutBounds返回0并且getPrefWidth返回-1。

如何获得按钮的宽度和高度?

1 个答案:

答案 0 :(得分:2)

您必须在显示舞台之前添加组件,并在显示舞台后获取值,即。 E:

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());
    }

}

作为替代方案,您可以调用创建图形后发生的任何事情到Platform.runLater,i。 E:

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