Java 基于GWT的响应式谷歌图表
我正在尝试在GWT应用程序中创建响应性谷歌图表。通过响应,我的意思是它根据浏览器大小调整宽度(可能也调整高度)。你可以检查这种行为 有些人建议怎么做,但这是谷歌图表的Javascript版本,而不是GWT版本。在GWT中,Options对象有一个setWidth方法,该方法需要和int值,因此这里不允许使用百分比。我尝试使用更通用的属性规范过程:Java 基于GWT的响应式谷歌图表,java,javascript,gwt,charts,Java,Javascript,Gwt,Charts,我正在尝试在GWT应用程序中创建响应性谷歌图表。通过响应,我的意思是它根据浏览器大小调整宽度(可能也调整高度)。你可以检查这种行为 有些人建议怎么做,但这是谷歌图表的Javascript版本,而不是GWT版本。在GWT中,Options对象有一个setWidth方法,该方法需要和int值,因此这里不允许使用百分比。我尝试使用更通用的属性规范过程: Options options = Options.create(); //options.setWidth(600); options.set
Options options = Options.create();
//options.setWidth(600);
options.set("width", "100%");
但这导致图表根本没有绘制……对我来说,如果没有指定宽度,它似乎根本不会绘制
我想我可以尝试捕获window.resize事件,但我不确定如何在GWT中从Java客户端执行此操作……有什么想法/建议吗
谢谢!
Alex很遗憾,百分比维度无法与google图表工具配合使用。您必须指定明确的维度。
在GWT中,有两种变通方法可以使图表具有响应性
- 使用非官方的GWT图表工具包装工具。它支持即时响应的图表。除此之外,它还为图表工具(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);
}
}
这在某种程度上是一种攻击,因为选项
和抽象数据表
在官方包装中是私有的。因此,您必须将它们再次添加到扩展类中才能访问它们。此外,官方的onLoad()
方法将Options
和AbstractDataTable
都设置为null,因此您不能在onResize()方法中访问它们
当然,为了正常工作,您必须将新图表添加到LayoutPanel
或实现providesize
的面板,否则不会调用onResize()
方法
- Fork官方的GWT图表包装器,并直接在那里添加上述功能
我建议切换到gwt图表包装器,因为它比官方的gwt谷歌图表包装器更新得多。Wow!真棒的贡献Ümit,我甚至不知道有一个“非官方”的gwt图表包…我会尝试一下,让你知道会发生什么…非常感谢!看起来非官方gwt图表包装器缺少了一些与数据相关的类别(如AbstractDataTable),因此我想我必须同时使用gwt可视化和非官方gwt图表(如果可能的话)…看起来分叉和尝试代码片段的速度会更快:当切换到gwt图表时,您不需要AbstractDataTable
。您将切换到使用他们的数据表
,它支持角色
和更高级的功能。嗯,这需要大修,我会检查一下!