我有一個非常繁忙的線程試圖做所有事情,它開始減慢我的MouseMotionListener。我想我會把聽者在另一個線程,以確保它始終運行儘可能快地就可以了,但只要我做到了:我可以將一個MouseMotionListener添加到Java中的另一個線程嗎?
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class MouseListenerThread extends Thread implements MouseMotionListener {
public void run(){
//Concurrency happens here
}
public void mouseDragged(MouseEvent e) {
// Do something
}
public void mouseMoved(MouseEvent e) {
// Do something else
}
}
我意識到,雖然我能有這等目標函數爲鼠標聽衆,我不能同時做到這一點。有什麼方法可以使用運行功能來實現監聽?我也會接受任何其他解決方案來加速聽衆。
謝謝!
在Swing中,您不應該在事件派發線程中進行任何長時間運行。你非常忙的線程應該是你創建的其他線程。您的鼠標監聽器將從事件派發線程調用,因此這兩個線程不應互相干擾。 – sjr 2013-03-08 22:24:24
如果你有一個影響'EDT'的進程,可以考慮將這個功能放在'SwingWorker'中。 'Mouse'只能在'EDT'中找到, – Reimeus 2013-03-08 22:26:33
所以你只是說要切換這兩個類,並讓所有的業務都進入備用線程,並讓所有的鼠標都聽到它在哪裏? – user1706538 2013-03-08 22:31:42