問題タブ [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 投票する
5 に答える
2315 参照

java - Java Swing BasicUI の更新エラーです。どうすればよいですか?

私のプログラムは、Swing JPanel、JList、JScrollPane を使用しています...

正常に実行されますが、次のエラー メッセージが生成されましたが、エラーの原因となったプログラムの行がメッセージに表示されませんでした。

================================================== =======================

================================================== ===================================

プログラムが正しく実行されることを確認するために、プログラムにさまざまな .validate() および .repaint() ステートメントがあります。私のプログラムは問題ないように見えますが、それはエラーを無視できるということですか? エラーメッセージを回避するためにできることはありますか?

================================================== ================================== 詳細はこちら:
<1> Java バージョン jdk1.6.0_11
< 2>リストの初期化方法:

私のプログラムは非常に長いリストを初期化する必要があり、これには約 1 分かかります。初期化が完了する前に UI を見るのが待ちきれないので、「SwingWorker」クラスに入れて、アプリの UI ウィンドウが開いた後に初期化を実行させます。そうすれば、最初のウィンドウが開くのを待つのではなく、UI 内から進行状況を確認できます。PC の遅さが UI 更新プロセスを混乱させているように思えます。後でより高速なマシンに移行した場合、Swing はこれを解決する必要がありますか、それともこれで正しいでしょうか?

「(Runnable で変更をラップし、SwingUtilities.invokeLater を呼び出す)」アプローチを使用しようとしましたが、期待どおりに機能しませんでした。すべてのリストが入力されるまで待機し、最初のウィンドウを開きます。つまり、最初の UI が表示される前に、空の画面を 1 分間見なければなりません。

SwingWorker では、エラー メッセージがランダムに表示されるようになりました。

私の SwingWorker は次のようになります。

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

java - Swing: スケジュールされたスレッドから値を UI に戻す

スケジュール データベース ポーリングを必要とする Java のシステム トレイ UI があります。新しいスレッドを生成して UI に通知するための最良の方法は何ですか?

私はSwingが初めてで、スレッドモデルです。

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

java - JDK-7 SwingWorker デッドロック?

SwingWorker を使用して一度に複数のことを行う小さな画像処理アプリケーションがあります。ただし、次のコード (簡略化された抜粋) を実行すると、JDK 7 b70 (Windows) ではハングしますが、6u16 では動作します。別のワーカー内で新しいワーカーを開始し、その結果を待ちます (実際のアプリは複数のサブワーカーを実行し、このようにずっと待機します)。ここで間違ったパターンを使用したのでしょうか (ほとんどの場合、swingworker-pool には 3 から 5 のワーカーがあり、10 の制限があると思います)。

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

java - SwingWorkerスレッドで実行される「長時間実行タスク」として何が適格である必要がありますか?

SwingWorkerスレッドの使用方法は知っていますが、使用するかどうかを決定するための正確な基準はまだありません。

I / Oは明らかなようですが、潜在的に大きなコレクションで動作するメソッドについてはどうでしょうか。

基準は実際の実行時間である可能性がありますが、どのような数値(ミリ秒単位)が適格でしょうか?

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

java - Java SwingWorker のハング

数値計算と GUI の更新を組み合わせて実行するために SwingWorker を使用して記述されたコードをデバッグしています。SwingWorker が次のスタック トレースでハングします。

$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)

私の理解では、GUI の作業は doInBackground() 内ではなく、done() 内で行う必要があります。doInBackground() のすべてのコードを done() に移動する単純な実験を実行しましたが、それでも機能しませんでした。この問題の根本原因を解決するために私ができることについて、人々が私に与えることができるヒントはありますか? コードは次のようになります。

もう 1 つの手がかりは、実行する SwingWorker スレッドが 2 つあることです。彼らは同じスレッドを実行できますか?

更新: SwingWorker を実行するコードは次のとおりです。

public final void animate(final long delayBetweenUpdatesMilliseconds, final List modelIndices, final boolean keepTrace, final List propertyChangeListeners) {

}

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

java - SwingWorkerのモーダルダイアログが閉じない

モーダルダイアログボックスを起動するSwingWorkerスレッドがあり(startedのStateValueをリッスンするプロパティ変更リスナーから)、SwingWorkerはその作業を続行します。ただし、doneメソッドはEDTで呼び出されているため呼び出されていないようですが、SwingWorkerのモーダルダイアログがEDTをブロックしています。そのため、EDT(またはdoneメソッド)からダイアログを閉じることができません。現在、そのメソッドの最後でdoInBackgroundからダイアログを閉じていますが、EDT上にないため、doInBackgroundからは少し安全ではないようです。これを処理するための最良の方法は何ですか?ありがとう。

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

java - メモ帳のJava版を作っているのですが、問題があります

すべての種類のファイル (Microsoft メモ帳など) を読み込もうとしています。私が持っている SwingWorker は通常のテキストを問題なくロードできますが、mp3、pdf などのファイルをロードしようとすると、NullPointerException が発生します。

誰かが私のコードを見て、mp3、pdf などのファイルでこのエラーが発生し続ける理由を理解できますか? 私が言ったように、エラーなしで通常の.htmlプレーンテキストファイルをロードできます。

これは、コードを次のように変更した後に得られるものです。

これは、Netbeans の「スタック トレース」(だと思います) です。

コードを次のように変更しました。

そして、私はまだNPEを受けています。

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

java - JavaInputReader。読み取られているファイルがバイナリかどうかを検出しますか?

このコードに関して質問を投稿しました。JTextAreaは、ロードされるバイナリ型データをサポートしていないことがわかりました。

だから私の新しい質問は、「悪い」ファイルを検出し、ファイルI / Oをキャンセルして、新しいファイルを選択する必要があることをユーザーに伝えるにはどうすればよいですか?

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

java - SwingWorker スレッドにどのように名前を付けますか? コードまたはベスト プラクティスを受け入れる

SwingWorker スレッドで発生している恐ろしい例外をデバッグしようとしています。SwingWorker スレッドに名前を付けることができれば、受け取ったスタック トレースをより適切に解釈できます。

SwingWorker スレッドに名前を付けることができないようです (そうですか?)。コードにログステートメントを追加するだけでなく、ワーカースレッドを適切に識別するのに役立つベストプラクティスまたは「トリック」を探しています。