0

每次启动时,我都有一个线程更新我的摇摆界面。即使我使用类的invokeLater()方法,SwingUtilities我仍然有这个延迟。

这是我的线程代码的运行:

public void run() {
    final int timeout=2000;
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                if (InetAddress.getByName(host).isReachable(timeout)){
                    ServerFrame.listModel.addElement(InetAddress.getByName(host).getHostName() + '\n');
                }
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });

    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

蚂蚁这就是我所说的

for (int i =63;i<66 ;i++) {
    ping p = new ping("192.168.1."+i);
    p.start();
}
4

1 回答 1

3

看起来您的代码违背了它的目的。:从您的线程中,您将代码提交到主 GUI 线程,该线程执行网络调用并且需要等待。

您应该从线程代码中的网络调用获取结果,然后才使用invokLater结果填充 GUI。

于 2013-08-25T11:20:56.827 回答