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