1

いくつかの画像コンポーネントを表示したいアプリケーションがあります。これの各アイテムは、オーバーライドされたメソッドでそれを描画するためのオブジェクトにcustom jcomponent画像を持っているものになります。また、グリッドに、またはカスタム画像を配置するためにを使用します。また、グリッドのレイアウトは。内になります。 私の質問は、グリッドに配置しなければならない画像の数が大きくなるとどうなるかということです。を使用してBufferedImagepaintcomponents(Graphics g)JPanelgridlayoutflowlayoutjcomponentsJscrollPane

jscrollpane、コンポーネントの数であるため、描画する必要のある画像の数は20〜30コンポーネントのように少なくなりますが、グリッドに挿入される各コンポーネントには、対応する画像を保持するためのBufferedImageのオブジェクトがあります。これはパフォーマンスとメモリ消費に悪いですか?いくつかのパターンを使用できますか?たとえば、メインの参照ポイントを使用してディスクからユーザーbufferedimageのどの長方形に画像をロードする場合scrollpane、ユーザーの現在の位置からグリッドに配置されたバッファリングされた画像を解放しjscrollpaneます。

ありがとうございました。

4

2 に答える 2

2

重要な変数のプロトタイプを作成し、結果をプロファイリングする必要があります。次に、これらの結果を最小公分母のターゲットプラットフォームで利用可能な機能と比較します。sscceは非常に貴重ですこれはたとえば、N画像の数を簡単に変えることができます。

いくつかの代替ビューがここに記載されています。

コメントに記載:メモリを節約するために、LRUキャッシュを検討してください。

于 2012-08-01T19:01:18.247 に答える
2
  1. 画像の読み込みをスレッド化して、読み込みによってUIが遅延しないようにします
  2. おそらくパネルのサイズに合うように画像を拡大縮小します。メモリを無駄にする必要はありません。
于 2012-08-01T20:01:59.250 に答える