画面显示黑屏


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();调用构造函数时,它显示:

你能解释一下为什么会这样吗?

从侦听器执行的代码在EDT上执行。我猜packketlistener .listener()方法阻塞了,在这种情况下GUI将冻结。你不应该阻塞EDT。

请阅读Swing教程中有关并发性的部分,以获得该问题的完整描述和解决方案。

我认为packetListener.listener();方法执行了一些复杂的操作,阻塞了您的UI。

最好创建一个线程来监听数据包。例如,像这样使用

 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();
        }

希望这对你有帮助

最新更新