必要なパケット データを含む ArrayList を JTable に入力しています。私の JTable は、1 つずつではなく、すべてのパケットが受信された後に読み込まれます。Jnetpcap ライブラリを使用していますが、スレッドに問題があると思われます。
Capture Class に Swing Worker を実装しましたが、どこに doInBackground() を効果的に配置すればよいのか疑問に思っていました。並行性について調べたので、ここで問題だと思っています。構文がオフです。テーブル モデルが必要ですか? その場合、どこに実装すればよいですか?
編集: public class Capture extends 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)