SwingWorker
送信されるパラメーター オブジェクトから表示用のプロットを計算するアクターがあります。次に、EDT スレッドにプロットを描画します。一部の GUI 要素は、このプロットのパラメーターを微調整できます。それらが変更されたら、新しいパラメーター オブジェクトを生成してワーカーに送信します。
これはこれまでのところ機能します。
スライダーを動かすと、多くのイベントが作成され、ワーカーのメールボックスにキューに入れられます。しかし、最後のパラメーター セットのプロットを計算するだけで済みます。受信トレイからすべてのメッセージを削除する方法はありますか? 最後の 1 つを保持し、それのみを処理しますか?
現在、コードは次のようになっています
val worker = new SwingWorker {
def act() {
while (true) {
receive {
case params: ExperimentParameters => {
//somehow expensive
val result = RunExperiments.generateExperimentData(params)
Swing.onEDT{ GuiElement.redrawWith(result) }
}
}
}
}
}