5

JTabbedPaneIn my Swingプログラムがあります。ユーザーがタブをクリックすると、プログラムがデータを取得して結果を処理するのに時間がかかり、選択したタブに結果が表示されます。

データを処理していることをユーザーに知らせるために、砂時計などを表示するにはどうすればよいですか? ジョブが完了する前にタブを再度クリックしないでください。

4

5 に答える 5

26

最も簡単な方法は、適切なカーソルを使用して、適切なコンポーネント(おそらくトップレベルウィンドウ)でsetCursorを呼び出すことです。

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

そして、終わったらそれを元に戻します。

component.setCursor(Cursor.getDefaultCursor());
于 2009-12-21T16:21:33.197 に答える
6

JProgressBar (不確定モードの可能性があります) は正しいように聞こえます。データがフェッチされるまで、それをタブに置きます。適切に設計された UI では、長時間実行されるタスクが完了するまでユーザーを待たせるのではなく、その間に別のことを実行できるようにする必要があります。

于 2009-12-21T16:12:24.273 に答える
3

setCursor(int)は非推奨になりました。これはおそらく少しきれいです:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
于 2009-12-21T16:24:19.730 に答える
0

私は他に述べたように

  • カーソルを変更します
  • SwingWorkerを使用する
  • ガラス板にプログレスバーまたはアニメーション画像を表示する
  • タスクが完了したら、ガラス板を非表示にします
  • デフォルトのカーソルに戻す
于 2009-12-28T08:55:11.947 に答える
0

他の回答が述べているように、待機カーソルを設定することもできますが、それ以上のマウスクリックを防ぐことにも言及しています。ガラス板を使用して、長い操作が終了するまでコンポーネントのクリックを防ぐことができます。ガラス板のSunチュートリアルに加えて、http: //www.java2s.com/Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htmに良い例があります。

于 2009-12-21T19:14:35.310 に答える