我在JFrame中有一个分形生成组件(JPanel的子类)。当用户调整窗口大小时,需要花费相当长的时间才能将分形更新为新的大小。
我目前在JPanel上有一个ComponentListener,但是每次用户在拖动窗口边框时移动鼠标都会调用它的componentResized事件。这意味着分形被告知要多次调整大小,然后(在几分钟的过程中)缓慢地增长到新的大小。
当用户释放鼠标按钮时,是否有一种通知方式,以便我只能在用户调整大小后更改分形大小?
其他人在将侦听器连接到JFrame时发生了reported的情况,但是由于某种原因,这对我(和others)不起作用。
最佳答案
只能在接收到最后一个事件之后才开始计算,而不是每次接收到事件都会开始计算。用伪代码(或至少我直接在此处而不是在我的IDE中键入的代码)
private Timer recalculateTimer = new Timer( 20, myRecalculateActionListener );
constructor(){
recalculateTimer.setRepeats( false );
}
@Override
public void componentResized(ComponentEvent e){
if ( recalculateTimer.isRunning() ){
recalculateTimer.restart();
} else {
recalculateTimer.start();
}
}
而且,您仍然可以将其与Andrews建议结合使用,以拉伸图像,直到计算完成为止。