暂停SwingWorker执行,直到Component停止调整大小

时间:2012-04-27 08:00:15

标签: swing repaint

我正在使用重绘来触发SwingWorker。此工作程序根据应用程序中的自动调整选项自动重新创建图像以适合封闭的JPanel的宽度。

问题是导致内存不足异常。这是因为图像具有较大的分辨率,并且在拖动调整窗口大小时会连续调用工作程序。

execute()为真时,我试图避免的只是isDone()。但是我觉得有更好的方法可以做到这一点。也许通过使用某种计时器?你有什么建议?

1 个答案:

答案 0 :(得分: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);

}