不幸的是,百分比维度不适用于谷歌图表工具。您必须指定明确的尺寸。
有几个解决方法可以使图表在 GWT 中响应。
- 使用非官方的 GWT 图表工具包装器gwt-charts工具。它支持开箱即用的响应式图表。除此之外,它还包含用于图表工具(DataRoles、控件和仪表板等)的新增功能的包装器。官方包装多年来没有任何更新。
- 扩展官方图表包装器并添加响应功能。
解决方案:
ResponsiveColumnChart extends ColumnChart implements RequiresResize {
protected Options options;
protected AbstractDataTable data;
public ResizeableColumnChart(AbstractDataTable data, Options options) {
super(data, options);
this.data = data;
this.options = options;
}
@Override
public void onResize() {
options.setWidth(getParent().getOffsetWidth());
options.setHeight(getParent().getOffsetHeight());
draw(data, options);
}
public void draw2(AbstractDataTable data2, Options options) {
this.data = data2;
this.options = options;
draw(data2,options);
}
}
这在某种程度上是一种黑客行为,因为Options
并且AbstractDataTable
在官方包装器中是私有的。因此,您必须再次将它们添加到扩展类中才能访问它们。而且onLoad()
官方的方法将Options
and都设置AbstractDataTable
为null,所以你不能在onResize()
方法中访问它们。
当然,为了正常工作,您必须将新图表添加到LayoutPanel
实现的面板或面板,ProvidesResize
否则onResize()
不会调用该方法。
- Fork 官方 GWT 图表包装器并直接在其中添加上述功能。
我建议切换到 gwt-charts 包装器,因为它比 GWT 过时的官方谷歌图表包装器更新。