GWT Highcharts、Java 和 xml UiBinder?

GWT Highcharts, Java, and xml UiBinder?

我想知道如何使用 GWT Highcharts 显示带有 xml UiBinder 的图形。 我一直在查看 Java 中 Highcharts 的示例。我从 Moxie Group:GWT Highcharts 页面复制了这个示例,并将其粘贴到我创建的 Java class 中:

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import org.moxieapps.gwt.highcharts.client.*;
import org.moxieapps.gwt.highcharts.client.labels.DataLabels;
import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions;

public class LineChart implements EntryPoint {

public void onModuleLoad() {
    RootPanel.get().add(createChart());
}




    public Chart createChart () {

        final Chart chart = new Chart()
                .setType(Series.Type.LINE)
                .setChartTitle(new ChartTitle()
                                .setText("Monthly Average Temperature")
                )
                .setChartSubtitle(new ChartSubtitle()
                                .setText("Source: WorldClimate.com")
                )
                .setToolTip(new ToolTip()
                                .setEnabled(false)
                );

        chart.getXAxis()
                .setCategories(
                        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
                );

        chart.getYAxis()
                .setAxisTitleText("Temperature °C");

        chart.setLinePlotOptions(new LinePlotOptions()
                        .setEnableMouseTracking(true)
                        .setDataLabels(new DataLabels()
                                        .setEnabled(true)
                        )
        );

        chart.addSeries(chart.createSeries()
                        .setName("Tokyo")
                        .setPoints(new Number[]{
                                7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6
                        })
        );
        chart.addSeries(chart.createSeries()
                        .setName("London")
                        .setPoints(new Number[]{
                                3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8
                        })
        );

        return chart;
    }

}

现在,我想看看这是否适用于我的项目。我需要做什么?我应该创建一个主要方法来显示图形吗?以及如何从 xml UiBinder 中引用这个 gram?

我希望折线图显示在 UiBinder 格式化的页面中,但如果我至少能看到图表 运行 会有很大帮助。

谢谢!

首先您需要下载 jquery 和 highcharts javascript 并将其包含在您的 myApp.html 文件中。

<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript" language="javascript" src="highcharts.js"></script>

然后您需要下载并包含 highcharts.jar 作为项目的依赖项。

然后您需要将 highcharts 模块包含到您的 gwt 项目中 (myApp.gwt.xml):

<inherits name="org.moxieapps.gwt.highcharts.Highcharts"/>

之后就可以开始使用UiBinder了。

在您的源目录中创建一个 Composite:例如,假设您的包是 com.mycompany。所以创建一个classcom.mycompany.MyChart.java

package com.mySampleApplication.client;

import com.google.gwt.core.shared.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import org.moxieapps.gwt.highcharts.client.*;

import org.moxieapps.gwt.highcharts.client.labels.DataLabels;
import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions;

public class MyChart extends Composite {


    interface MyUiBinder extends UiBinder<FlowPanel, MyChart> {
    }

    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

    @UiField(provided = true)
    public final Chart chart;

    public MyChart() {
        chart = new Chart()
                .setType(Series.Type.LINE)
                .setChartTitle(new ChartTitle().setText("Monthly Average Temperature"))
                .setChartSubtitle(new ChartSubtitle().setText("Source: WorldClimate.com"))
                .setToolTip(new ToolTip().setEnabled(false));

        chart.getXAxis()
                .setCategories(
                        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
                );

        chart.getYAxis().setAxisTitleText("Temperature °C");

        chart.setLinePlotOptions(new LinePlotOptions()
                        .setEnableMouseTracking(true)
                        .setDataLabels(new DataLabels()
                                        .setEnabled(true)
                        )
        );

        chart.addSeries(chart.createSeries()
                        .setName("Tokyo")
                        .setPoints(new Number[]{
                                7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6
                        })
        );
        chart.addSeries(chart.createSeries()
                        .setName("London")
                        .setPoints(new Number[]{
                                3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8
                        })
        );

        initWidget(uiBinder.createAndBindUi(this));
    }
}

然后在你的资源文件夹中创建对应的UiBinder文件com.mycompany.MyChart.ui.xml

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:g='urn:import:com.google.gwt.user.client.ui'
             xmlns:highcharts="urn:import:org.moxieapps.gwt.highcharts.client">

    <g:FlowPanel>
        <highcharts:Chart ui:field="chart"/>
    </g:FlowPanel>

</ui:UiBinder>

最后创建您的图表组合并将其添加到 DOM

public void onModuleLoad() {
    RootPanel.get().add(new MyChart());
}

如果你不使用 UiBinder 可能会容易得多,但这似乎是你的一个要求。