我正在创建一个实时图形应用程序,使用名为“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可能无法正常运行。我正在寻找一个解决方案,可能涉及线程。我尝试了一些基本的东西,比如运行显示器并将每个显示为单独的线程,但我无处可去。