Java 基于GWT的响应式谷歌图表

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

我正在尝试在GWT应用程序中创建响应性谷歌图表。通过响应,我的意思是它根据浏览器大小调整宽度(可能也调整高度)。你可以检查这种行为

有些人建议怎么做,但这是谷歌图表的Javascript版本,而不是GWT版本。在GWT中,Options对象有一个setWidth方法,该方法需要和int值,因此这里不允许使用百分比。我尝试使用更通用的属性规范过程:

 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
。您将切换到使用他们的
数据表
,它支持
角色
和更高级的功能。嗯,这需要大修,我会检查一下!