在我轮询数据时,图形GUI冻结并且不加载

时间:2015-09-28 03:37:57

标签: java java-threads

我正在创建一个实时图形应用程序,使用名为“LiveGraph”的库,我偶然发现了它。从本质上讲,LiveGraph应用程序是一个GUI,它继续从包含数据的文本文件中读取,并更新相应的图形。

以下是我所拥有的代码片段(解释如下:

for (VisualDisplay vd : visDisplayElements) {
    vd.display();
    System.out.println("Done executing.");
}

while (!dcm.done) {
    String packet = dcm.run();
    HashMap<String, Integer> dataMap = initializeMap (packet, config.delimiter, config.colNames);
    for (VisualDisplay element : visDisplayElements) {
        element.receivedDataSet(dataMap);
    }
}

第一个for循环基本上遍历图表列表并为每个图表加载GUI。之后的while循环基本上会通过网络永久轮询数据。

现在的情况是:当我只显示图形时(即,如果我注释掉while循环),图形显示并打开(但显然不显示任何内容,因为没有任何轮询)。但是,如下所示的所有代码,图形的GUI窗口打开,但完全灰色,没有内容。如果我尝试以任何方式调整大小或与它们交互,应用程序会冻结,我必须强制退出。

我把这缩小到这个问题,即线程在某种程度上是一个问题。 while循环将永远保持运行,并且由于这个原因,GUI可能无法正常运行。我正在寻找一个解决方案,可能涉及线程。我尝试了一些基本的东西,比如运行显示器并将每个显示为单独的线程,但我无处可去。

0 个答案:

没有答案