問題タブ [swingworker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 自動更新スキームでデータを挿入するJTable
このJTableには、1分または(60000l)ごとに残り時間を表示する自動更新機能を実装しています。
しかし、挿入される行がまだ行われていない場合(データのエンコードはJTable自体で行われている)、データが失われると、この問題が発生します。自動更新機能を削除せずに、データの損失を防ぐため。
スレッドを一時停止して(自動更新機能にSwingWorker(Void、Void)を使用)、データの挿入/更新が失われないようにすることはできますか?
java - JavaSwingワーカーとコンボボックスの問題
Swingを使用して、データベースを使用するアプリケーションを構築しています。解決方法がわからないという奇妙な問題があります。
特定のパネルに、DBクエリを使用してレコードを入力するcomboBoxがあります。コンボボックスを保持するJPanelの構築が完了した後、ワーカーを実行しています
SELECTdoInBackground
クエリを実行し、結果を取得した後(ワーカーのdone()
メソッドで)、パネルのモデルを更新し、パネルのを呼び出しますrefreshFromModel
。
refreshFromModel
次のことを行います:
ここで問題となるのは、refreshFromModelが終了した後、GUIがスタック/フリーズすることです。なぜ私にはアイデアがありません!奇妙なことは、別のフレームで、私は同じ方法論を使用しています-そしてそれは問題なく動作します。
また、removeAll
代わりに試してみるremoveAllItems
と機能しますが、ComboBoxは矢印を失い、奇妙な動作をします。
デバッガーでフレームトレースを取得しました。removeSourceEventやUnsafe.parkなどがあります。
よろしくお願いします。
java - タイマーを使用してSwingWorkerを起動しますか?
実行する必要のあるタスクには、外部サーバーからのデータの要求、データに対する(かなり長い)処理の実行、および処理の結果でGUIを更新することが含まれます。サーバーが応答しない可能性があるため、タスクはSwingWorkerに適しています。doInBackground()
メソッドが結果を取得し、doneメソッドがGUIを更新します。
これは数秒に1回発生する必要があります。whileループとThread.sleepを使用して、スリープするたびに新しいSwingWorkerを作成できることはわかっています。しかし、私が読んだものはすべて、ループと睡眠を使用すると眉をひそめます。タイマーを使いたいのですが:
スイングタイマーの使用は逆効果のようです。それらはEDTで実行されるため、基本的にSwingWorkerのdoInBackgroundメソッドを使用する理由はありません。サーバーが応答しない場合、GUIは応答しません。
java.util.Timerを使用すると、少し無駄に思えます。TimerTask()のバックグラウンドスレッドが作成されるようです。実際の作業を行うためにSwingWorkerを作成しているだけなので、基本的に、別のスレッドを作成するバックグラウンドスレッドを作成しています。バックグラウンドスレッド。
誰かが私に最善の解決策を教えてもらえますか?SwingWorkerはタスクに最適であると思われるので、これを使い続けたいと思いますが、手伝うことができれば、whileループの使用は避けたいと思います。
ありがとう
java - SwingWorker の実行をキャンセルするにはどうすればよいですか?
現在、バックグラウンドでジョブを実行している 2 つの SwingWorker スレッドがあります。例外が発生した場合、メソッドは動作を停止しますが、スレッドは引き続き実行されます。
doInBackground()
例外が発生した場合、実行を停止してスレッドを強制終了するにはどうすればよいですか?
this.cancel(true)
スレッドを破棄/閉じないでください。どうすればこれを達成できますか?
これらのスレッドは、Netbeans のデバッグで確認できます。
java - Java Swing ワーカーをシングルトンとして使用して、アプリケーション データをバックグラウンドでバックアップする
Java SwingWorker をシングルトンとして使用して、アプリケーション データをバックグラウンドで定期的にバックアップする予定です (おそらく Swing タイマーまたは java.util.Timer と組み合わせて)
。Singleton を SwingWorker に適用するのは良い考えですか?
java - Javaで2つのSwingWorkerクラスでデータを共有する方法
2 つの SwingWorker クラスがFileLineCounterThread
あります。FileDivisionThread
2 つのスレッドを実行します。行数カウント スレッドが終了すると、結果がファイル分割スレッドに渡されます。
結果を開始スレッドに渡す方法がわかりません。
java - SwingWorker:正確にdoneメソッドと呼ばれるのはいつですか?
done()
のメソッドのJavadocSwingWorker:
doInBackgroundメソッドが終了した後、イベントディスパッチスレッドで実行されます。
キャンセルされた労働者の場合、それは真実ではないという手がかりがあります。
Done
はそれぞれの場合(通常の終了またはキャンセル)に呼び出されますが、通常の終了の場合と同様に、EDTにエンキューされていないcancelled
場合に呼び出されます。
done
aSwingWorker
がキャンセルされた場合に、が呼び出されたときのより正確な分析はありますか?
明確化:この質問は、どのようにするかではありません。ここでは、が正しい方法でキャンセルされていると想定しています。
そして、それは、スレッドが終了することになっているときにまだ機能しているということではありません。cancel
SwingWorker
SwingWorker
java - SwingWorkerで寝ていますか?
ある期間にわたってSwing間隔にテストデータをフィードする必要があります。データセットは解析に時間がかかるためSwingWorker
、バックグラウンドで解析するためにを使用しています。GUIへのデータのフィード(たとえば、1秒に1つのアイテム)に関しては、Timer
から開始できSwingWorker
ますが、これはやり過ぎのようです。SwingWorker
それ自体の中から眠らない理由はありますか?
乾杯
java - Java SwingWorker - パブリッシュ/プロセスを使用して EDT で TextArea を更新しますか?
SwingWorker (Socket Server を実行する) を起動する Swing プログラムをコーディングしました。JTextArea.append(String) を使用して、Socket Server が受信したデータで更新される Swing GUI に JTextArea があります。
Swing GUI で JTextArea を更新する正しい/スレッドセーフな方法ですか? パブリッシュ/プロセスの使用についてはどうですか?
java - SwingWorker をキャンセルしても Java SwingWorker Socket Server がキャンセルされない
Java SwingWorker として実行されているソケット サーバーを取得しました。
SwingWorker は着信接続を受信し、接続時に、接続を処理する Executor にソケットを渡します。Executor は、run() メソッドを介してソケットを処理する SocketHandler を呼び出します。
これで、GUI に停止というボタンが 1 つあります。停止ボタンを押したときに SwingWorker の実行を停止したい。そのために、Stop ボタンを押したときに呼び出される cancel(true) メソッドを用意しました。
現在、プログラムが cancel(true) メソッドを呼び出しているにもかかわらず、SocketHandler は受信データを受信し続けています。何が起きてる?
cancel(true) メソッドを呼び出しても SwingWorker が停止しないのは JDK 内のバグであるといういくつかの記事を読みました。これは本当ですか?