問題タブ [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 - JProgressBar がループで値を更新する際の問題 (スレッド化)
いくつかの操作を実行している間、プログラムがメソッド内で進行状況バーの値を常に更新するようにしようとしています。ただし、これは最後まで発生せず、UI がフリーズします。
私の問題に関する同様の質問を調べた後、受け入れられた解決策(スレッドを使用)を実装しようとしましたが、正しく機能させることができません。彼らがそこにいないかのようです。
私のプログラムにはいくつかのクラスが含まれており、それらは JFrameデザインモードでMain
netbeans によって自動的に作成されたものです。以下に、これらのメソッドのスニペットを、スレッドの実装と共に配置します。static void main
public Main
私がコメントしたことはすべて、I added...
オンラインで見たチュートリアルと回答に従って入力したものですが、何も機能していないようで、100万近くの異なる組み合わせを試したような気がします...
助けてくれてありがとう。
java - SwingWorkerスレッドの実行が完了しても、スレッドが実行され続けるのはなぜですか?
コンソールアプリケーション用のGUIを実装していますが、指定した時間間隔でいくつかのアクション(たとえば、XMLファイルの解析)を実行する必要があります。これらのアクションによってアプリケーションが応答しなくなることがないように、SwingWorkerと一緒にjavax.swing.Timerを使用することにしました。
私はこのようにタイマーを実装しました:
...そしてそれを次のように使用します:
すべてが私が望むように機能します。タイマーは新しいSwingWorkerインスタンスを作成し、それを実行します。ワーカーが完了すると、新しいワーカーが作成されて実行されます。
私が混乱しているのは、ワーカーのスレッドが完了した後も、Netbeansのデバッグウィンドウ(たとえば、SwingWorker-pool-3-thread-1)またはWindowsタスクマネージャー(実行中のスレッドは、スレッドが完了した後も減少しません)。SwingWorkerスレッドの数は10に制限されていますが、それらを実行すると恥ずかしい思いをします。
単純なスレッドの使用の場合:
このスレッドは実行後に自動的に消えます。
このSwingWorkerの動作は正常ですか?
java - 更新可能なJProgressBarを使用したJavaSwingスレッディング
まず最初に、私はJavaの同時実行パッケージをかなり最近使用していますが、私が立ち往生している問題を見つけました。欲しいのですが、アプリケーションとアプリケーションにはSplashScreen
、ステータスバーと他のデータの読み込みがあります。そこで、を使用することにしましたSwingUtilities.invokeAndWait( call the splash component here )
。次にSplashScreen
、が表示され、JProgressBar
スレッドのグループが実行されます。しかし、私は物事をうまく処理できないようです。私はこれを調べてSwingWorker
この目的で使用しようとしましたが、スレッドが戻ってきます。これが少しの擬似コードです。そして私が達成しようとしているポイント。
SplashScreen
情報の読み込み中に一時停止するアプリケーションがある- の下で複数のスレッドを実行できる
SplashScreen
- Update-ableのプログレスバーを
SplashScreen
用意しますが、すべてのスレッドが完了するまで終了しないでください。
スプラッシュ画面の起動
スプラッシュスクリーンの構築
SwingWorkers
、CountDownLatchを使用したスレッドなど、さまざまなことを試しました。CountDownLatchは実際には処理を実行したい方法で機能しましたが、GUIを更新できませんでした。を使用すると、基本的に無効化されるSwingWorkers
かinvokeAndWait
(これが目的です)、を使用してもGUIが更新されませんPropertyChangedListener
。他の誰かがいくつかのアイデアを持っているなら、それを聞くのは素晴らしいことです。前もって感謝します。
私は実際に役立つコードを投稿する準備をして、自分の解決策を見つけました。助けてくれたすべての人に感謝します。
java - SwingWorker の問題
SwingWorker を機能させようとしています。私は現時点で次のコードを持っています:
画像が JLabel に表示されることを期待していましたが、JFrame だけが表示されます。ファイルは正しくロードされます 別のセットアップでテストしました。ポインタはありますか?
java - Swing のバックグラウンド スレッド
私は途方に暮れています、スイングワーカーの簡単な使い方。doInBackground() に簡単なコードをいくつか追加しましたが、実行されず、例外も発生しません。デバッガを使用すると、彼は正常に動作しています。)) 誰かがこのようなものを持っているか、この間違いをキャッシュする方法を教えてください...申し訳ありませんが、コードは複雑です。もっと何かが必要か、コメントを教えてください。「installer.setFPS(fPSCalculatorGhost.getFPS());」文字列を削除すると、すべて問題ありません。
すべてが fpsTask-object を中心に展開します。これは、interfaceUpdate-thread (またはアプリケーション ワーカー スレッド) によって使用され、他のスレッドによって使用され、そこで初期化されます。結果: 1)。fpsTask-object は 1 つのスレッドで初期化されます 2)。fpsTask-object は別のスレッドに値を渡します。
FPSCalculatorGhost final から fpsTask を作成すると、動作し始めます。
java - Eclipse プラグイン コードが外部の Java Swing アプリケーションから SwingWorking スレッドを呼び出せないのはなぜですか?
GUI 用のスイング フレームワークを使用するスタンドアロンの Java アプリケーションを実装しました。GUI の一部として、ボタンがクリックされた後に表示される JTextArea があり、ジョブがバックグラウンドで処理された後に jtextarea にテキストが追加されます。 jtextareaでアプリをフリーズさせたくないので、SwingWorkerライブラリを使用していますが、完全に機能します。したがって、ジョブコードはオーバーライドされたdoInBackground内にあります。
私が直面している問題は、この GUI アプリケーションを Eclipse プラグインの一部として起動するときです。swing アプリで jar を作成し、Eclipse ワークベンチに拡張機能を追加しました。最初はアプリが適切に起動しましたが、アプリケーション フローは、swingworker が呼び出されるポイントに進みます。この特定の jtextarea はフリーズし、何も起こりませんでした。Swingworker の doInBackground() 関数内のコードが呼び出されていないようです。以下のように、Eclipse pugin コード内でアプリを起動しています。
MAinFrame は、Java プログラムの JFrame クラスです。なぜこれが起こっているのか知っていますか?
java - MVC Progress Bar Threading
I am using an MVC pattern for my design, when a user presses the search button, I call a search in the model, but I also want to update a progress bar with information returned from that model.
I have tried using a swingworker, but the progress bar does not update. I suspect I am doing something wrong with my threading.
My button as defined in the controller is:
This calls the search in the model and has the following call in the view:
Dummy function defined in Model for testing:
java - MVC では、モデルは何を行い、SwingWorker との関係は何ですか?
Java、Swing、MVC、および SwingWorker についてよく読んでいますが、MVC でのモデルの役割については完全に混乱しています。
私は2つのボタンを持つアプリを構築しています:
- ファイルを選ぶ
- ファイルを読む
ロギングに使用されるテキストボックスもあります。
私が現在していること:
- ビューにはウィジェットが含まれていますが、ロジックは含まれていません
- ボタンの actionPerformed() メソッドは、コントローラのメソッドを呼び出します
- コントローラーは、ファイルを取得するために必要なデータ (OptionPane.showOpenDialog() の表示を含む) をフェッチします。
- ファイル参照はモデルに保存されます。
- モデルは、新しいファイルのビューに (PropertyChangeSupport、オブザーバー パターン) を通知します。
- ビューは「ファイルの読み取り」ボタンを有効にします
私の最初の質問:モデルに状態を保存する必要がありますか? つまり、一連の操作に関連する情報です。ファイルを読み取る前に、まずファイルを選択する必要があります。したがって、私のモデルはステートマシンになります。
2 番目の質問: Controller に OptionPane を表示させるのは正しいですか?
それから楽しみが始まります。ユーザーは「ファイルの読み取り」ボタンをクリックします。「ファイルの選択」ボタンとほぼ同じことをしています。View は Controller を呼び出しますが、Controller は SwingWorker を使用してファイルを読み取ります。これは EDT で行うべきではないためです。SwingWorker は、View (SwingWorker.process() メソッド) への参照を介してテキスト ボックスに追加される中間ログ メッセージを発行します。コントローラは、SwingWorker からの「状態」プロパティの変更をリッスンします。「状態」が「DONE」の場合、コントローラーは「get()」関数を呼び出します。すべてが OK であれば、結果がモデルに設定されます。そうでない場合は、例外が処理されます。
私の 3 番目の最も重要な質問: モデルはファイルの読み取りを行うべきではありませんか?! MVC の全体的なポイントは、すべての利点 (テスト容易性など) を備えた関心の分離です。新しいビュー (例: CLI) が必要な場合はどうすればよいですか? 次に、私のモデルはデータモデルのみになります。ファイルの読み取り方法についての手がかりがありません。スレッドの問題はどうですか?
うまくいけば、私に良いアドバイスを与えることができます。インターネット上には SwingWorker や MVC などに関する例がたくさんあります。しかし、私の問題はそれらに対してどのようにコーディングするかではなく、どのように設計するかです。
java - Swingコンポーネントにアクセスし、時間のかかるメソッドを呼び出したときにSwingGUIが応答しなくなるのを防ぎます
次の行:
GUIが応答しなくなります。
このメソッドを呼び出してGUIの大部分のlafを更新すると、時間がかかるため、この操作中にGUIが応答しなくなります。
この操作はGUIを操作しているため、SwingWorkerを使用することもできません。SwingWorkerのドキュメントから:
時間のかかるタスクは、イベントディスパッチスレッドで実行しないでください。そうしないと、アプリケーションが応答しなくなります。
Swingコンポーネントには、イベントディスパッチスレッドでのみアクセスする必要があります。
ただし、ここでの問題は、操作がSwingコンポーネントにアクセスしていて、時間がかかることです。
この無反応を防ぐ良い方法はありますか?