GWT-EXTのPanel描画タイミング
Panel上にたくさんのコンポーネントが表示されていて内容を更新する際に、描画がカクカクする場合の修正ポイントです。
例えば
panel.setPosition(x, y);
panel.setHeight((int)(PANEL_HEIGHT*scale));
panel.setWidth((int)(PANEL_WIDTH*scale));
// パネル上のイメージリサイズ
panel.getImage().setHeight((int)(IMAGE_SIZE*scale)+"px");
panel.getImage().setWidth((int)(IMAGE_SIZE*scale)+"px");
・・・
・・・その他パネル上のコンポーネント再描画処理
// パネル表示
panel.show();
こんな処理だったのですが、再描画の回数が多いと画面がカクカクしてしまいます。
調べてみるとpanel.setPositionが呼ばれた時点で1回パネルの描画が走ります。
その後パネル上のコンポーネントの描画が行われ最後のshowで再度パネルが再描画されるので、正味2回パネルの描画が実行されていました。
// パネル上のイメージリサイズ
panel.getImage().setHeight((int)(IMAGE_SIZE*scale)+"px");
panel.getImage().setWidth((int)(IMAGE_SIZE*scale)+"px");
・・・
・・・その他パネル上のコンポーネント再描画処理
// パネル表示
panel.setPosition(x, y);
panel.setHeight((int)(PANEL_HEIGHT*scale));
panel.setWidth((int)(PANEL_WIDTH*scale));
panel.show();
とまとめるとカクカク感はなくなります。
あまりたいした話ではないですが、なかなか解決しなかったので書いておきます。
ちなみに
panel#doLayout
というメソッドもそれっぽかったのでいろいろ試してみたんですが、いまいち使い道が不明です。。。
Posted in GWT |
