问题描述
在Vaadin 14.4.2中,我有一个场景,其中我在splitLayout中添加了一个图表。但是,当我作为用户扩展或收缩splitLayout时,相应的图表不会调整大小。其他组件(例如网格)会自动调整大小。是否有一些“魔术”配置选项可以使图表像其他组件一样工作? (下面的屏幕截图显示了图表没有的大小已调整,即使其下方的网格 did 正确地自动调整了大小。)(也可以这样称呼,spectraChart.setSizeFull();
因此,图表应该占用了所有可用空间。)(另一点供参考:即使重做绘图,我也可以“捕获” splitLayout的调整大小,但是在我看来,这在理想情况下在“框架”中不必要解决方案,例如Vaadin,因为图表是一个组件,其行为应与其他组件(例如网格)一样。)
解决方法
是的,不幸的是,这是事实。您可以通过更改分配器位置时对图表进行显式JavaScript调用以重排来解决此问题。下面的代码段查找所有图表并对其进行重排:
innerLayout.addSplitterDragendListener(event -> {
getUI().ifPresent(
ui -> ui.getPage()
.executeJavaScript(
"Array.from(window.document.getElementsByTagName('vaadin-chart')).forEach( el => el.__reflow());"
));
});