0

问题出在通过单击或调整浏览器大小的绘图上。我将 TabPanel 与 RowData、两个带有图表(Google Vizualization)的 TabItems 放在一个上,将具有相同数据的 Table 放在下一个上。我在页面加载时创建它们。然后我点击从 DB 中加载数据(按钮),我重绘了这两个:

    public void reDraw(final List<Double> slices, final String[] devices)
    {
        pcPie.draw(createTable(slices,devices),createOptions("По автомобилям"));
        tPie.draw(createTable(slices, devices),CreateTableOptions());
    }

这仅适用于活动 TabItem 并在生成的 HTML 中用这个大小(400px;200px)替换后面的绘图空间,我发现后面部分的数据没有改变。

此外,当我调整浏览器的大小时,图表和表格没有调整大小。我尝试使用一些布局,它们不起作用。可能是我不明白如何正确使用它们。所以,

  1. 如何在这两个部分(活动和后面)中正确调整图表和表格的大小?
  2. 如何在浏览器调整大小事件上调整图表和表格的大小?
4

1 回答 1

0

我们的第一个问题来自于此:当您将 TabPanel 组件与一些 TabItems 一起使用时,TabItems 的后面并没有被完全创建,并且您无法重绘它们,因为没有创建对象。所以我们在激活部分更改我们的代码:

public void run() { 
    tpLineCharts.setBorders(true);                 
        TabItem tiGraph = new TabItem("График");
            tableData = createTable();
            lcLines = new LineChart(tableData, 
                                    createOptions("По компании"));
            lcLines.addSelectHandler(createSelectHandler(lcLines)); 
        tiGraph.setLayout(new FitLayout());
        tiGraph.add(lcLines);
    tpLineCharts.add(tiGraph);  
        TabItem tiTable = new TabItem("Таблица");                      
            tLine = new Table(tableData, CreateTableOptions());                                                 
        tiTable.add(tLine);                                               
        tiTable.addListener(Events.Select, new Listener<BaseEvent>()
        {
            @Override
            public void handleEvent(BaseEvent be) {                                           
                tLine.draw(tableData);
            }
        });
    tpLineCharts.add(tiTable);                  
}}, CoreChart.PACKAGE, Table.PACKAGE); 

其中 tableData - AbstractTableData。修改后我们可以重绘我们的组件:

public void reDrawLineChart(final ArrayList <Double> sumCompanyTraffic, 
    final ArrayList<Integer> axisName, String title)
{          
    tableData =createTable(sumCompanyTraffic, axisName); 
    tLine.draw(tableData, CreateTableOptions());
    lcLines.draw(tableData, createOptions(title));
}

您还需要添加此选项:

private Options createOptions(String title) 
{
    Options options = Options.create();
    options.setTitleX("Период");                
    options.setTitle(title);     
    if(tpLineCharts.isRendered())
        options.setSize(tpLineCharts.getWidth(true), 
                tpLineCharts.getHeight(true));

    return options;
}
于 2013-02-26T09:05:53.680 回答