我正在使用重绘来触发SwingWorker
. JPanel
该工作人员根据应用程序中的自动调整选项自动重新创建图像以适应封闭的宽度。
问题是导致内存不足异常。这是因为图像具有很大的分辨率,并且当窗口被拖动调整大小时,工作人员会被连续调用。
我试图避免这种情况的只有execute()
当isDone()
它是真的时。但是我觉得有更好的方法来做到这一点。也许通过使用某种计时器?你有什么建议?
这是一个小的左侧字段,但基本上我所做的是使用 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);
}