我正在使用包含必要数据包数据的 ArrayList 填充 JTable。我的 JTable 是在收到所有数据包后而不是一个一个地填充。我正在使用 Jnetpcap 库,我相信我遇到了线程问题。
我在 Capture 类中实现了一个 Swing Worker,但我想知道在哪里有效地放置 doInBackground()。我阅读了并发,所以我认为这是这里的问题,我的语法是关闭的。我是否需要一个表模型,如果需要,在哪里实施?
编辑:公共类 Capture 扩展 SwingWorker {
//Variables
protected doInBackground() throws Exception {
//Get Packets
//Convert data to ArrayList
pulish(list);
PCap.loop(10, jPacketHandler, null);
PCap.close();
所以基本上循环将获得 10 个数据包,但表仅在 PCap.close() 中收到数据包后更新;我知道我的 Swing 以某种方式被阻止,但我不确定在哪里。
我的 GUI 类显式调用此方法(doInBackground)