0

我正在创建一个实时图形应用程序,使用我偶然发现的一个名为“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-loop 将永远运行,并且可能 GUI 将因此无法正常运行。我正在寻找解决方案,可能涉及线程。我尝试了一些基本的事情,例如运行显示并将每个作为单独的线程轮询,但我无处可去。

4

0 回答 0