5

私はJavaの経験があまりなく、プログレスバーを機能させるのに問題があります。Netbeansの組み込みGUIメーカーを使用しています。現在、私のプログラムはディレクトリから画像配列に画像を読み込みます。明らかにこれには少し時間がかかるので、簡単なプログレスバーでユーザーを更新して、読み込みの距離を確認したいと思います。これらのドラッグアンドドロッププログレスバーコンポーネントの1つを使用しました。

  • 現在、ディレクトリ内のファイルの数を取得し、ロードされたファイルの割合を計算できます
  • ファイルはアレイに正常にロードされますが、進行状況バーはすべてのファイルがロードされた後にのみ更新されます。ループ中に再検証と再ペイントを試みましたが、これは機能しません
  • docs.oracleでさまざまなチュートリアルを試しましたが、何も機能していないようです。
  • SwingWorkerは私が使用すべきクラスだと思いますが、これは正しいですか?

例やアドバイスを参考にしていただければ幸いです。ありがとう!

4

1 に答える 1

2

はい、すべての新しいSwingプログラマーの罠に遭遇しました-イベントディスパッチスレッド

基本的に、これThreadはあらゆるSwingシステムの心臓部です。すべてのUIコンポーネントにイベントをディスパッチし、UIを更新するように再描画マネージャーに要求する責任があります。

中に時間のかかるタスクを実行EDTすると、UIが更新されなくなります。

まず、ワーカースレッドとSwingWorkerを読み、Swingの同時実行性を確認することをお勧めします。質問することになるので、この回答を読んでください。JTextAreaの追加の問題の使用例がいくつかありSwingWorkerます

于 2012-08-17T15:27:36.593 に答える