我有一个SwingWorker
演员,它根据它发送的参数对象计算要显示的情节;然后在 EDT 线程上绘制绘图。一些 GUI 元素可以调整此绘图的参数。当它们发生变化时,我会生成一个新的参数对象并将其发送给工作人员。
到目前为止,这有效。
现在,当移动滑块时,会创建许多事件并在工作人员的邮箱中排队。但我只需要计算最后一组参数的图。有没有办法从收件箱中删除所有邮件?保留最后一个并只处理那个?
目前代码看起来像这样
val worker = new SwingWorker {
def act() {
while (true) {
receive {
case params: ExperimentParameters => {
//somehow expensive
val result = RunExperiments.generateExperimentData(params)
Swing.onEDT{ GuiElement.redrawWith(result) }
}
}
}
}
}