2012-03-12 1 views
0

JPanelコンポーネントにイメージをロードする必要があります。 JPanelには10個のコンポーネントがあり、これらのコンポーネントすべてに背景イメージを設定する必要があると考えてください。 ペイント方法で私は背景イメージ設定ロジックを実装しましたが、それは非常に遅いです。JPanelの子コンポーネントのセット内のイメージを効率的にFile Systemからロードする

同じタスクを効率的に実行したいと思っていました。

答えて

2

コンポーネントのペイントメソッドは、ウィンドウを移動、ドラッグ、サイズ変更、およびその他のいくつかの状況で呼び出されるたびに呼び出されます。したがって、コンポーネントをペイントするためにペイントメソッドを使用し、ロードプロセスを1回だけ呼び出すようにしてください。

例えば、あなたのイメージの小さなサムネイルを作成し、クラスのいくつかの種類でそれらをキャッシュ:

class Thumbnail extends Component { 
    ... 
    BufferedImage cachedThumbnail; 

    public Thumbnail(File thumbnailFile) { 
     //read image 
     //(scale image) 
     this.cachedThumbnail = ...; 
    } 
    ... 
    public static void paint(Graphics2D g) { 
    //only paint the cached image ... 
    g.drawImage(cachedThumbnail,..,..,..,..); 
    } 
} 
関連する問題