首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中将ColumnChart添加到DockLayoutPanel?

如何在Java中将ColumnChart添加到DockLayoutPanel?
EN

Stack Overflow用户
提问于 2014-03-26 18:48:12
回答 1查看 190关注 0票数 0

我在Java上写了代码

代码语言:javascript
复制
public class MyClass implements EntryPoint {
public void onModuleLoad() {

    // Create a callback to be called when the visualization API
    // has been loaded.
    Runnable onLoadCallback = new Runnable() {
        public void run() {
            RootLayoutPanel rp = RootLayoutPanel.get();

            // Create a Dock Panel
            DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
            dockLayoutPanel.setStyleName("dockpanel");
            dockLayoutPanel.getElement().getStyle().setProperty("border", "solid lightblue 4px");

            // Add text all around
            dockLayoutPanel.addNorth(new HTML("This is the first north component."), 2);
            //dockPanel.addEast(col.asWidget(), 1);
            dockLayoutPanel.addWest(new HTML("This is the west component."), 3);

            VerticalPanel verticalPanel = new VerticalPanel();
            ColumnChart col = new ColumnChart(createTable(), createOptions());
            col.addSelectHandler(createSelectHandler(col));
            verticalPanel.add(col);
            dockLayoutPanel.add(verticalPanel);                                             

            rp.add(dockLayoutPanel);
        }
    };

    // Load the visualization api, passing the onLoadCallback to be called
    // when loading is done.
    VisualizationUtils.loadVisualizationApi(onLoadCallback,
            ColumnChart.PACKAGE);
}

}

(救救我,各位!)如何在ColunnChart中添加DockLayoutPanel?在这段代码中,我将ColumnChart添加到VerticalPanel,然后将VerticalPanel添加到dockLayoutPanel,然后将dockLayoutPanel添加到RootLayoutPanel。但是错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-26 18:58:30

使用以下代码

代码语言:javascript
复制
ChartLoader chartLoader = new ChartLoader(ChartPackage.CORECHART);
chartLoader.loadApi(new Runnable() {

    @Override
    public void run() {
        VerticalPanel verticalPanel = new VerticalPanel();
        ColumnChart col = new ColumnChart();
        col.addSelectHandler(createSelectHandler(col));
        verticalPanel.add(col);
        col.draw(createTable(), createOptions());
        dockLayoutPanel.add(verticalPanel); 
    }
});

而不是

代码语言:javascript
复制
        VerticalPanel verticalPanel = new VerticalPanel();
        ColumnChart col = new ColumnChart(createTable(), createOptions());
        col.addSelectHandler(createSelectHandler(col));
        verticalPanel.add(col);
        dockLayoutPanel.add(verticalPanel);    

-编辑--

完整样本代码

代码语言:javascript
复制
public void onModuleLoad() {
    RootLayoutPanel rp = RootLayoutPanel.get();

    // Create a Dock Panel
    final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
    dockLayoutPanel.setStyleName("dockpanel");
    dockLayoutPanel.getElement().getStyle().setProperty("border", "solid lightblue 4px");

    // Add text all around
    dockLayoutPanel.addNorth(new HTML("This is the first north component."), 2);
    // dockPanel.addEast(col.asWidget(), 1);
    dockLayoutPanel.addWest(new HTML("This is the west component."), 3);

    ChartLoader chartLoader = new ChartLoader(ChartPackage.CORECHART);
    chartLoader.loadApi(new Runnable() {

        @Override
        public void run() {
            VerticalPanel verticalPanel = new VerticalPanel();
            ColumnChart col = new ColumnChart();
            verticalPanel.add(col);
            drawChart(col);
            dockLayoutPanel.add(verticalPanel);
        }
    });

    rp.add(dockLayoutPanel);
} 

private void drawChart(ColumnChart chart) {
    // Prepare the data
    DataTable dataTable = DataTable.create();
    dataTable.addColumn(ColumnType.STRING, "Density");
    dataTable.addColumn(ColumnType.NUMBER, "Copper");
    dataTable.addColumn(ColumnType.NUMBER, "Silver");
    dataTable.addColumn(ColumnType.NUMBER, "Gold");
    dataTable.addColumn(ColumnType.NUMBER, "Platinum");

    dataTable.addRows(1);

    dataTable.setValue(0, 0, "");
    dataTable.setValue(0, 1, 8.94);
    dataTable.setValue(0, 2, 10.49);
    dataTable.setValue(0, 3, 19.30);
    dataTable.setValue(0, 4, 21.45);

    // Draw the chart
    ColumnChartOptions options = ColumnChartOptions.create();
    options.setVAxis(VAxis.create("Density"));
    options.setHAxis(HAxis.create("Metel"));

    String[] colors = new String[] { "#b87333", "silver", "gold", "#e5e4e2" };
    for (int i = 0; i < colors.length; i++) {
        ColumnChartSeries series = ColumnChartSeries.create();
        series.setColor(colors[i]);
        options.setSeries(i, series);
    }
    options.setTitle("Density of Precious Metals, in g/cm^3");

    chart.draw(dataTable, options);
}

gwt.xml文件中添加下面一行

代码语言:javascript
复制
  <inherits name="com.googlecode.gwt.charts.Charts"/> 

快照:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22670384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档