0

問題は、ブラウザのクリックまたはサイズ変更による図面にあります。TabPanel を RowData に配置し、2 つの TabItems を 1 つに Chart (Google Visualization) に配置し、Table に同じデータを次のものに配置しました。ページの読み込み時に作成します。次に、[DB からデータを読み込む] (ボタン) をクリックして、次の 2 つを再描画します。

    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 に答える