0

DockLayoutPanel の中央ゾーン内 (RootLayoutPanel 内) でチャートを開くと、チャートが最初にレンダリングされるとき (おそらく onModuleLoad 中) に、チャートの高さ/幅が正しくありません。チャートは、中央ゾーンのサイズではなく、RootLayoutPanel のサイズを取ります。

ブラウザー ウィンドウのサイズを変更すると、グラフのサイズが正しく変更されます。誰もこれを修正する方法を知っていますか?

@Override    
public void onModuleLoad()    
{
  RootLayoutPanel rootPanel = RootLayoutPanel.get();
  Chart chart = createChart();
  chart.setWidth100();
  chart.setHeight100();

  DockLayoutPanel dock1 = new DockLayoutPanel(Unit.PX);

  SimpleLayoutPanel slp1 = new SimpleLayoutPanel();
  slp1.getElement().getStyle().setBackgroundColor("blue");

  SimpleLayoutPanel slp2 = new SimpleLayoutPanel();
  slp2.getElement().getStyle().setBackgroundColor("yellow");

  SimpleLayoutPanel slp3 = new SimpleLayoutPanel();
  slp3.getElement().getStyle().setBackgroundColor("red");

  SimpleLayoutPanel slp4 = new SimpleLayoutPanel();
  slp4.getElement().getStyle().setBackgroundColor("green");

  dock1.addNorth(slp1, 50);
  // dock1.addSouth(slp3, 50);
  dock1.addWest(slp2, 50);
  // dock1.addEast(slp4, 50);

  dock1.add(chart);
  rootPanel.add(dock1);
}

私が試した情報については

 chart.redraw();
 rootPanel.forceLayout();

しかし、それは状況を改善しません

Github プロジェクトの例: https://github.com/mycom-int/gwthighcharts

4

3 に答える 3

0

これまでに見つけた唯一の解決策は、ドックが rootpanel に追加された後にスケジューラーを使用することです

      Scheduler scheduler = Scheduler.get();
      scheduler.scheduleDeferred(new ScheduledCommand()
      {

         @Override
         public void execute()
         {
            chart.setSizeToMatchContainer();
         }
      });
于 2013-11-07T12:41:26.963 に答える
0

このソリューションは Ronan Quillevere によって詳細に説明されており、彼が提供したリンク ( https://github.com/mycom-int/gwthighcharts ) で入手できます。ただし、彼がヘルパー コンテナーとして提供する ChartSimpleLayoutPanel は、RequiresResize インターフェイスを実装するコンテナー内に追加する必要があることを指摘したいと思います。これは、ブラウザ ウィンドウのサイズが変更されるたびに、ChartSimpleLayoutPanel の onResize() メソッドが呼び出されてチャートの適切なサイズ変更が行われるようにするための必須要件です。

明確な例を挙げると、コンテナーが uibinder を使用して実装されたページである場合、そのページは Composite クラスではなく ResizeComposite クラスを拡張する必要があります。もう 1 つの役立つヒントは、FlowPanel は RequiresResize メカニズムを壊すため、コンテナーを FlowPanel に含めてはならないということです。

お役に立てれば。

于 2015-12-14T11:59:28.653 に答える
-1

もう 1 つのオプションは、Chart クラスを拡張して RequiresResize を実装することです。onResize メソッドで setSizeToMatchContainer() をスケジュールします。

于 2015-06-05T21:31:26.550 に答える