框架显示黑屏
问题描述:
btnnew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
System.out.println("Hello");
packetListener.listener();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
运行时出现黑屏。但是当它显示的构造函数调用packetListener.listener();
时。框架显示黑屏
你能解释一下为什么会发生这种情况吗?
答
我认为packetListener.listener();
方法执行一些复杂的操作会阻止你的用户界面。
更好地创建一个线程来侦听数据包。 即使用这样
try {
System.out.println("Hello");
new Thread(new Runnable() {
public void run() {
packetListener.listener();
}
}).start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
希望这有助于你
+0
@ user1089146,我在一周前给你这个答案。本教程解释了您的确切问题,解释了为什么您需要使用单独的线程。它甚至提供了一个使用SwingWorker的工作解决方案,它可以为您创建线程,让代码更轻松。 – camickr 2012-01-11 16:07:51
答
从监听器执行的代码在EDT上执行。我猜测packetListner.listener()方法在这种情况下将会冻结GUI。你不应该阻止美国东部时间。
请阅读Swing教程中有关Concurrency的部分,以全面了解此问题和解决方案。
为什么所有的下跌票? – Basic 2012-01-02 22:08:40