問題タブ [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.

0 投票する
1 に答える
2476 参照

java - 自動更新スキームでデータを挿入するJTable

このJTableには、1分または(60000l)ごとに残り時間を表示する自動更新機能を実装しています。

しかし、挿入される行がまだ行われていない場合(データのエンコードはJTable自体で行われている)、データが失われると、この問題が発生します。自動更新機能を削除せずに、データの損失を防ぐため。

スレッドを一時停止して(自動更新機能にSwingWorker(Void、Void)を使用)、データの挿入/更新が失われないようにすることはできますか?

0 投票する
3 に答える
1243 参照

java - JavaSwingワーカーとコンボボックスの問題

Swingを使用して、データベースを使用するアプリケーションを構築しています。解決方法がわからないという奇妙な問題があります。

特定のパネルに、DBクエリを使用してレコードを入力するcomboBoxがあります。コンボボックスを保持するJPanelの構築が完了した後、ワーカーを実行しています

SELECTdoInBackgroundクエリを実行し、結果を取得した後(ワーカーのdone()メソッドで)、パネルのモデルを更新し、パネルのを呼び出しますrefreshFromModel

refreshFromModel次のことを行います:

ここで問題となるのは、refreshFromModelが終了した後、GUIがスタック/フリーズすることです。なぜ私にはアイデアがありません!奇妙なことは、別のフレームで、私は同じ方法論を使用しています-そしてそれは問題なく動作します

また、removeAll代わりに試してみるremoveAllItemsと機能しますが、ComboBoxは矢印を失い、奇妙な動作をします。

デバッガーでフレームトレースを取得しました。removeSourceEventやUnsafe.parkなどがあります。

よろしくお願いします。

0 投票する
4 に答える
2004 参照

java - タイマーを使用してSwingWorkerを起動しますか?

実行する必要のあるタスクには、外部サーバーからのデータの要求、データに対する(かなり長い)処理の実行、および処理の結果でGUIを更新することが含まれます。サーバーが応答しない可能性があるため、タスクはSwingWorkerに適しています。doInBackground()メソッドが結果を取得し、doneメソッドがGUIを更新します。

これは数秒に1回発生する必要があります。whileループとThread.sleepを使用して、スリープするたびに新しいSwingWorkerを作成できることはわかっています。しかし、私が読んだものはすべて、ループと睡眠を使用すると眉をひそめます。タイマーを使いたいのですが:

  • スイングタイマーの使用は逆効果のようです。それらはEDTで実行されるため、基本的にSwingWorkerのdoInBackgroundメソッドを使用する理由はありません。サーバーが応答しない場合、GUIは応答しません。

  • java.util.Timerを使用すると、少し無駄に思えます。TimerTask()のバックグラウンドスレッドが作成されるようです。実際の作業を行うためにSwingWorkerを作成しているだけなので、基本的に、別のスレッドを作成するバックグラウンドスレッドを作成しています。バックグラウンドスレッド。

誰かが私に最善の解決策を教えてもらえますか?SwingWorkerはタスクに最適であると思われるので、これを使い続けたいと思いますが、手伝うことができれば、whileループの使用は避けたいと思います。

ありがとう

0 投票する
6 に答える
17288 参照

java - SwingWorker の実行をキャンセルするにはどうすればよいですか?

現在、バックグラウンドでジョブを実行している 2 つの SwingWorker スレッドがあります。例外が発生した場合、メソッドは動作を停止しますが、スレッドは引き続き実行されます。

doInBackground()例外が発生した場合、実行を停止してスレッドを強制終了するにはどうすればよいですか?

this.cancel(true)スレッドを破棄/閉じないでください。どうすればこれを達成できますか?

これらのスレッドは、Netbeans のデバッグで確認できます。

0 投票する
2 に答える
475 参照

java - Java Swing ワーカーをシングルトンとして使用して、アプリケーション データをバックグラウンドでバックアップする

Java SwingWorker をシングルトンとして使用して、アプリケーション データをバックグラウンドで定期的にバックアップする予定です (おそらく Swing タイマーまたは java.util.Timer と組み合わせて)
。Singleton を SwingWorker に適用するのは良い考えですか?

0 投票する
5 に答える
4481 参照

java - Javaで2つのSwingWorkerクラスでデータを共有する方法

2 つの SwingWorker クラスがFileLineCounterThreadあります。FileDivisionThread

2 つのスレッドを実行します。行数カウント スレッドが終了すると、結果がファイル分割スレッドに渡されます。

結果を開始スレッドに渡す方法がわかりません。

0 投票する
6 に答える
17431 参照

java - SwingWorker:正確にdoneメソッドと呼ばれるのはいつですか?

done()のメソッドのJavadocSwingWorker:

doInBackgroundメソッドが終了した後、イベントディスパッチスレッドで実行されます。

キャンセルされた労働者の場合、それは真実ではないという手がかりがあります。
Doneはそれぞれの場合(通常の終了またはキャンセル)に呼び出されますが、通常の終了の場合と同様に、EDTにエンキューされていないcancelled場合に呼び出されます。

doneaSwingWorkerがキャンセルされた場合に、が呼び出されたときのより正確な分析はありますか?

明確化:この質問は、どのようにするかではありません。ここでは、が正しい方法でキャンセルされていると想定しています。 そして、それは、スレッドが終了することになっているときにまだ機能しているということではありません。cancelSwingWorkerSwingWorker

0 投票する
2 に答える
1548 参照

java - SwingWorkerで寝ていますか?

ある期間にわたってSwing間隔にテストデータをフィードする必要があります。データセットは解析に時間がかかるためSwingWorker、バックグラウンドで解析するためにを使用しています。GUIへのデータのフィード(たとえば、1秒に1つのアイテム)に関しては、Timerから開始できSwingWorkerますが、これはやり過ぎのようです。SwingWorkerそれ自体の中から眠らない理由はありますか?

乾杯

0 投票する
1 に答える
1334 参照

java - Java SwingWorker - パブリッシュ/プロセスを使用して EDT で TextArea を更新しますか?

SwingWorker (Socket Server を実行する) を起動する Swing プログラムをコーディングしました。JTextArea.append(String) を使用して、Socket Server が受信したデータで更新される Swing GUI に JTextArea があります。

Swing GUI で JTextArea を更新する正しい/スレッドセーフな方法ですか? パブリッシュ/プロセスの使用についてはどうですか?

0 投票する
3 に答える
810 参照

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 内のバグであるといういくつかの記事を読みました。これは本当ですか?