GWT Highcharts使用JSNI调用Javascript

GWT Highcharts使用JSNI调用Javascript,gwt,highcharts,jsni,gwt-highcharts,Gwt,Highcharts,Jsni,Gwt Highcharts,我正在编写一个GWT应用程序并使用highcharts。有些功能不能在Java中实现,但可以在javascript中实现。我得到了一个如何实现我可以使用的东西的例子,但是,我不知道如何包含在我的代码中 我的代码包括一个声明为图表的变量 我想实施一个如本答案所示的事件 或 但我不确定如何将两者联系起来。感谢您的帮助 首先创建这样一个本机方法 private native void foo(JavaScriptObject chart)/*-{ var legend = chart.lege

我正在编写一个GWT应用程序并使用highcharts。有些功能不能在Java中实现,但可以在javascript中实现。我得到了一个如何实现我可以使用的东西的例子,但是,我不知道如何包含在我的代码中

我的代码包括一个声明为
图表的变量

我想实施一个如本答案所示的事件


但我不确定如何将两者联系起来。感谢您的帮助

首先创建这样一个本机方法

private native void foo(JavaScriptObject chart)/*-{
    var legend = chart.legend;

    for (var i = 0, len = legend.allItems.length; i < len; i++) {
        var item = legend.allItems[i].legendItem;

        item.on('mouseover', function (e) {
            //show custom tooltip here
            console.log("mouseover");
        }).on('mouseout', function (e) {
            //hide tooltip
            console.log("mouseout");
        });
    }
}-*/;
chart.setLoadEventHandler(new ChartLoadEventHandler() {

        @Override
        public boolean onLoad(ChartLoadEvent chartLoadEvent) {
            foo(chart.getNativeChart());

            return true;
        }
    });

就这些!希望这能对你有所帮助。

你说的“使用高图”是什么意思?您是否使用moxiegroup的GWT包装版本?它只是包含在JS资源中,而您自己只包装必要的调用吗?项目中的highcharts API是否完全用java公开?是的,我使用的是moxiegroup的GWT包装版本。据我所知,highcharts API完全是用java公开的,但我想补充一些不在其中的东西。
private native void foo(Chart c)/*-{


}-*/;
private native void foo(JavaScriptObject chart)/*-{
    var legend = chart.legend;

    for (var i = 0, len = legend.allItems.length; i < len; i++) {
        var item = legend.allItems[i].legendItem;

        item.on('mouseover', function (e) {
            //show custom tooltip here
            console.log("mouseover");
        }).on('mouseout', function (e) {
            //hide tooltip
            console.log("mouseout");
        });
    }
}-*/;
chart.setLoadEventHandler(new ChartLoadEventHandler() {

        @Override
        public boolean onLoad(ChartLoadEvent chartLoadEvent) {
            foo(chart.getNativeChart());

            return true;
        }
    });