我有一个非常繁忙的线程试图做所有事情,它开始减慢我的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