GWT - 原生js图表

时间:2014-07-05 21:31:54

标签: javascript gwt charts native

我正在尝试使用外部javascript文件创建一个用于GWT项目的PieChart小部件。 我如何在本机函数GWT中从外部js库获取类实例?

    public class PieChart implements IsWidget{

    Canvas c;

    public PieChart() {
        c = Canvas.createIfSupported();

        init(c.getElement());

    }

    private native void init(Element e) /*-{
            var data = [];
            var ctx = e.getContext("2d");
            var myNewChart = new Chart(ctx);
            myNewChart.Doughnut(data,{animateScale: true});
    }-*/;

    private native void add(PieChartData p) /*-{
    var data = [{
        value: p.value,
        color: p.color,
        hightlight: p.hightlight,
        label: p.label
    }];

    myNewChart.addData(data); // <-- null
}-*/;

    @Override
    public Widget asWidget() {
        return c;
    }

}

我在向图表添加值时遇到问题。 请帮我。谢谢。


我想使用GWT中的Canvas创建一个PieChart类作为一个小部件,并且可以使用该图表。使用PieChart类:

    AbsolutePanel panel = new AbsolutePanel();

    PieChart p = new PieChart();
    panel.add(p); 

编译项目 - 显示图表。 我想动态地向图表添加数据。我不知道如何用本机js初始化对象并在其他方法中使用它。 对变量myNewChart的引用显示错误 - NullPointer,因为它没有初始化myNewChart变量。

我会以这种方式添加数据:

    AbsolutePanel panel = new AbsolutePanel();

    PieChart p = new PieChart();
    panel.add(p); 
    p.add(data);

我不知道怎么做; /

要在GWT中创建一个我可以使用图表的类,使用此页面中的外部js文件:http://www.chartjs.org/docs/

1 个答案:

答案 0 :(得分:0)

我猜&#34; //&lt; - null&#34;你有问题在哪里?!

尝试保留对创建的图表对象的引用。

在班级中创建成员

JavaScriptObject myNewChart;

并通过替换

在init方法中初始化它
var myNewChart = new Chart(ctx);

this.@fully.q.p.n.PieChart::myNewChart = new Chart(ctx);