Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在主线程中运行循环时显示加载JFrame_Java_Multithreading_Swing_Loops_Event Dispatch Thread - Fatal编程技术网

Java 在主线程中运行循环时显示加载JFrame

Java 在主线程中运行循环时显示加载JFrame,java,multithreading,swing,loops,event-dispatch-thread,Java,Multithreading,Swing,Loops,Event Dispatch Thread,这是我的第一篇帖子,如果我做错了什么,请告诉我。 我一直在用一个小程序来获取几个节点的状态。这是通过让每个节点的线程在网络类中检查其正常运行时间来实现的。一旦获得节点的状态,它就会将其放入hashmap中。然后我检查hashmap的状态,并等待其内容量等于我们正在检查的节点总数。一旦完成,它将继续在屏幕上显示它们。问题在于,尽管使其成为一个线程繁重的应用程序,但获取所有节点的状态仍然需要几秒钟的时间。在这段时间里,我想用一个加载条显示一个单独的JFrame(如果可以的话,甚至可以使用相同的JFr

这是我的第一篇帖子,如果我做错了什么,请告诉我。 我一直在用一个小程序来获取几个节点的状态。这是通过让每个节点的线程在网络类中检查其正常运行时间来实现的。一旦获得节点的状态,它就会将其放入hashmap中。然后我检查hashmap的状态,并等待其内容量等于我们正在检查的节点总数。一旦完成,它将继续在屏幕上显示它们。问题在于,尽管使其成为一个线程繁重的应用程序,但获取所有节点的状态仍然需要几秒钟的时间。在这段时间里,我想用一个加载条显示一个单独的JFrame(如果可以的话,甚至可以使用相同的JFrame)

我不会撒谎,我是一个Java新手,代码很糟糕,我想知道你们是否可以给我一些建议,我应该怎么做。下面是代码

--主节点状态窗口--

下面是加载线程的演示

public class ShowLoading implements Runnable {
    public void run() {
        try {
            GUIHandler.drawNodeStatusLoadingWindow();
        } catch (Exception e) {
            System.out.println("Exception! " + e.toString());
        }
    }
}

1) 改为在对话框中显示进度条。2) 为了更快地获得更好的帮助,请发布一个。3) “在此期间,我希望显示一个带有加载条的单独JFrame(如果可以的话,甚至可以使用相同的JFrame)。”有关工作示例,请参阅。所有GUI更新都应该在EDT上完成,而所有长期运行的任务都应该从EDT中删除。这对于..
public class ShowLoading implements Runnable之类的代码来说不是个好兆头{..GUIHandler.drawNodeStatusLoadingWindow();
。有关详细信息和工作示例,请参阅。这里还有另一个
SwingWorker
,可能会为您提供前进的建议。感谢链接Andrew,但它似乎已关闭。。。
public class NodeStatusLoadingWindow extends JFrame {
    private static final long serialVersionUID = 1369511477485416862L;

    private JLabel status;

    public NodeStatusLoadingWindow() {
        super(Managment.getTitle() + " - Nodes");
        setLayout(new FlowLayout());

        status = new JLabel("Loading...");
        add(status);
    }

    public void closeWindow() {
        this.setVisible(false);
        this.dispose();
    }
}
public class ShowLoading implements Runnable {
    public void run() {
        try {
            GUIHandler.drawNodeStatusLoadingWindow();
        } catch (Exception e) {
            System.out.println("Exception! " + e.toString());
        }
    }
}