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

java - SwingWorker を選ぶ理由 Thread または Runnable だけではないのはなぜですか?

またはのSwingWorker代わりに使用する利点は何ですか?ThreadRunnable

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

java - メイン以外のクラスで進行状況バーを使用できますか?

現在、私のメインは 10 行の GUI を呼び出すだけです。これらの行のうちテキストが含まれている行の数に基づいて、9 つのクラスのうちの 1 つが呼び出されます (2 つの行にテキストが含まれている必要があります)。呼び出されたクラスは、進行状況バーを関連付けたい計算を実行します。呼び出されたクラスの 1 つの例を次に示します (各クラスは似ていますが、新しいクラスを保証するのに十分なほど異なります)。問題は EDT 規則に違反していると思いますが、それらで見たすべての例にはメインの口論。コードが実行されるとフレームが表示されますが、進行状況バーはすべての計算が完了するまで更新されません。

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

java - イベントディスパッチスレッド内で、タスクが終了するまで待機してから続行する方法は?

Swing で作成された GUI を備えたプログラム、ゲームがあります。

GUI は、JFrame を継承し、カードとして複数の JPanel を持つ CardLayout を持つ JPanel を保持する独自のクラスで構成されています。

これらのパネルの 1 つには、ゲームを開始するボタンがあり、ゲーム ビューはカードの 1 つにあります (JPanel を継承する独自のクラスを持つビュー オブジェクトは、JFrame のコンストラクターでカードに追加されます)。 .

今プロローグ:

JButton を押すので、Event Dispatch Thread にジャンプして actionPerformed メソッドを実行します。

このメソッドでは、最初にビュー パネルを保持するカードをめくってから、プレイするレベルとゲーム エンジン (レベルに従ってインスタンス化されます) をインスタンス化します。次に、ビュー オブジェクトで repaint を呼び出し (アプリケーション ウィンドウでゲームがペイントされることになります)、ゲーム エンジン オブジェクトを呼び出してゲーム ループを開始します。

私の問題は次のとおりです。

ボタンを押すと、ゲーム エンジンが正常に動作し始めます (コンソールの出力から確認できます) が、GUI がフリーズし、更新されずにゲーム ビューが表示されません。ゲーム ループを開始するコードのスニペットを削除すると、ゲーム ビューが画面に正常に表示されますが、ゲーム ループが開始されていないため、何も動きません。

したがって、Java ではすべてが記述された順序で行われるわけではないため、actionperformed メソッド内の他の操作が完了する前にゲーム ループの実行が開始されると推測しました。

actionperformed メソッドからの関連するスニペットは次のとおりです。

CardLayout kortti = (CardLayout)valikopaneeli.getLayout(); Kentta kentta = new Kentta("testikentta.txt"); kortti.show(valikopaneeli、「ペリ」); Peli.this.pack(); Peli.this.setVisible(真); aloita(ケンタ); }

aloita(kentta) メソッドのスニペットを次に示します。

ここで、Pelimoottori = ゲーム エンジン クラス nakyma = ビュー オブジェクト peliLooppi() = ゲーム ループを開始するゲーム エンジン クラスのメソッド

aloita メソッドから moottori.peliLooppi() 呼び出しを削除すると、ゲーム ビューは正常に表示されます。

私はいくつかの答えをグーグルで検索しようとしましたが、私が得た最も遠いものは、どういうわけかSwingWorkerでそれを行うことですが、どういうわけか私がやりたいことをする良い方法のようには思えません.

助言がありますか?

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

java - java GUI frozen when downloading file

In my other class I have a event listener

When I click the button on my GUI it freezes up and the label & button never change until the file is downloaded:

http://img200.imageshack.us/img200/2435/45019860.png

Do I have to start the download on a new thread or something? If I start it on a new thread is it still possible to use the progress bar? I'm still new to java so I apologize if I'm doing this completely wrong.

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

java - ワーカー スレッドからプログレスバーを更新する

サーバーから N 個の要素をダウンロードする Java プログラムを作成しています。「既にダウンロードされた要素」/N パーセンテージを示す作業進行状況バーが必要です。現在、スレッドに GUI オブジェクトへの参照を渡してプログレスバーの値を更新していますが、コードが「醜い」ものになります (GUI クラスは、GUI 自体への参照を含むスレッドを作成し、一種のループを作成します)。それを行うより良い方法はありますか?

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

java - Thread または計算を行う SwingWorker の起動時に疑似ブロックをスイングする

非常に奇妙な動作をする非常に単純なアプリケーションがあります。

これは基本的に SwingWorker の例ですが、ボタンを押すと、EDT がブロックされているかのように GUI が動作します。2 つを同時に起動でき、それらは並行して実行されます (実行時間はほぼ同じです) が、実行中にメニューがフリーズします。ランナブルでスレッドを使用すると、まったく同じ動作が発生します。また興味深いのは、ループが Thread.sleep に置き換えられた場合、GUI が適切に動作することです。

何か案は?

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

java - 自分のプロジェクトでJavaソースコードを使用する

私はJava6.0でプログラムを作成しましたが、一部のクライアントには5.0しかありません。

問題は、6.0が持っていた多くの機能がまだ5.0になかったことです。例えば:

  • JTableの並べ替え、フィルタリング機能
  • SwingWorkerクラス

私の質問は:

  1. Java 6.0のソースコードを自分のプロジェクトにコピーして、5.0jreのクライアントが実行できるようにすることは合法ですか。
  2. 技術的な観点から、TableRowSorter、regexFilterなどのクラスのソースコードを自分のプロジェクトにコピーして機能させるのは難しいですか?

ありがとう

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

java - JavaSwingワーカーの実装に問題があります

スイングバックグラウンドタスクの実行について学習したばかりで、実験を始めていますが、実装に少し問題があります。私のコードは画像を取得し、画像の取得が成功した結果=0か失敗した結果=-1かを示す結果(整数)を返します。これが私の問題です。結果を取得するのが早すぎます。結果がdone()メソッドで読み取られた後に実行される、以下のコードのcreateImageメソッドのステートメントを確認できます。createImageが完了するまでdoneメソッドは実行されないと思いました。これが私のコードです:

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

java - SwingWorkersは動作を停止しました

私は非常に奇妙な問題を抱えています。私はSwingを使用してアプリケーションに取り組んでいましたが、もちろんSwingWorkersを使用しています。彼らは昨夜まで元気に働いていた。プログラムを実行したばかりですが、作業者は実行ごとに作業を停止しました。(実際には、1行のコードは変更していません)。この奇妙な振る舞いを説明できるような更新や昨夜の何かが起こっていましたか?

OpenSuSE11.1ボックスでJavaSE-1.6を使用しています。私はEclipseGalileoで開発しています。