1

repaintを使用してをトリガーしていSwingWorkerます。このワーカーJPanelは、アプリケーションの自動調整オプションに従って、囲みの幅に合わせて画像を自動的に再作成します。

問題は、メモリ不足の例外を引き起こしていることです。これは、画像の解像度が高く、ウィンドウのドラッグサイズ変更時にワーカーが継続的に呼び出されるためです。

私がこれを避けようとしたのは、それが真実であるexecute()ときだけisDone()です。しかし、これを行うにはもっと良い方法があると思います。おそらく、ある種のタイマーを使用することによって?何を指示してるんですか?

4

1 に答える 1

1

少しレフトフィールドですが、基本的には javax.swing.Timer を使用しています。基本的な考え方は、タイマーが起動したときにのみアクションを実行することです。

private Timer timer;

.
.
.

timer = new Timer(250, new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

        // Perform required action
        // Start the swing worker ??

    }
});
timer.setCoalesce(true);
timer.setRepeats(false);

.
.
.

public void setBounds(int x, int y, int width, int height) {

    // Force the time to start/reset
    timer.restart();

    super.setBounds(x, y, width, height);

}
于 2012-07-11T01:52:37.083 に答える