2011-07-02 11 views
0

JavaのネイティブスウィングUI要素は、多くのレンダリング最適化を行い、より優れたパフォーマンスを発揮することを理解します。つまり、私はカスタマイズされたJPanel(意味、私はpaintComponentメソッドをオーバーライドしました)を持っています:Javaスイングレンダリングの最適化

  1. レンダリングの最適化はまだ実行されますか?
  2. JPanelを再描画するときに親コンテナに手動で伝えることはできますか?つまり、JPanelの再レンダリングを明示的に指示されるまでフリーズできますか?
  3. もしそうなら(#2)、JPanelの特定の部分(スマートな絵画、私はそれが呼ばれていると思います...)だけを再描画するように伝えることはできますか?
  4. 最後に、JPanelの透明度、丸みのある角、またはその他の非長方形の形状をJPanelで再描画しますか? (つまり、JPanelの下の要素を再描画することを意味します)

もしそうでない場合、それを偽造する別の方法がありますか? (好きなだけで、私が読むことができるソース/リファレンスへの単なるリンク)

+0

[AWTとスイングでのペイント](http://java.sun.com/products/jfc/tsc/articles/painting/index.html)も参照して、1つの質問に集中してください。プロファイリング後に最適化します。 – trashgod

答えて

1

レンダリングを高速化するには、BufferedImageを使用できます。画像のグラフィックスでコンテンツを一度レンダリングし、すべてのコンテンツをレンダリングする代わりに画像を使用します。

パネルの部分をレンダリングするグラフィック 'setClip()/ getClip()は、リフレッシュされる領域をチェックし、部分のみを描画します。

非長方形のオブジェクトを描画するには、必要な図形を設定する同じsetClipを使用します。

+0

匿名up-voter +1 – mKorbel