2012-03-12 1 views
3

一定の時間(10秒)待つようにします。 JSPまたはサーブレットでMETAタグ<META HTTP-EQUIV="Refresh" CONTENT="3">を使用しています。ユーザーがしばらく待つようにする方法はありますか?私はスイングを使用しています。私は、ユーザーが一定の時間待機するようにしたい、と私はデータベースからフェッチされるいくつかの情報を表示したい。スイングで可能ですか?Swingを使用してユーザーを待機させる

+0

いくつかのコントロールを一定期間入力するか、フォーム全体を再読み込みしますか?どのようにスレッドを使用してコンテンツを10秒後にロードすることができます –

答えて

5

javax.swing.Timerを使用できます。 !例えば:..私はJProgressBarは何が必要だと思う

enter image description here

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.SwingUtilities; 
import javax.swing.Timer; 

public class SimpleTimer extends JFrame implements ActionListener 
{ 
    private JLabel label; 
    private Timer timer; 
    private int counter = 10; // the duration 
    private int delay = 1000; // every 1 second 
    private static final long serialVersionUID = 1L; 

    public SimpleTimer() 
    { 
     super("Simple Timer"); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(300, 65); 
     label = new JLabel("Wait for " + counter + " sec"); 
     getContentPane().add(label); 
     timer = new Timer(delay, this); 
     timer.setInitialDelay(0); 
     timer.start(); 
     setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       new SimpleTimer(); 
      } 
     }); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     if(counter == 0) 
     { 
      timer.stop(); 
      label.setText("The time is up!"); 
     } 
     else 
     { 
      label.setText("Wait for " + counter + " sec"); 
      counter--; 
     } 
    } 
} 
1

スレッドで試しましたか?

Thread.sleep(10000); 

あなたは簡単にそれを達成することができます。詳細情報を入手できますhere

2

前WebSocketをへ

3

、HTTPサーバは、HTTPクライアントのイベント」を送信できませんでした。対話は基本的に要求応答でした。多くのアプリケーションは、(クライアント側の)ポーリング手法を使用してこの問題を回避します。リフレッシュメタタグは、ポーリングを実装する1つの方法です。

スイングは非常に異なっています。あなたはイベントの強みを持っています。したがって、ユーザが所定の時間待機するようにするという考え方は、通常、間違ったやりとりである。

結果が計算/受信されていない間は機能的で応答性の高いSwing GUIを設計する必要があります。結果が入手できたら、モデルを更新し、イベントにモデルが変更されたことを通知してください。

モデル自体は、必要に応じてバックグラウンド計算やポーリングなどを行うことができます。そのコードはスイング固有ではありません。その面で助けが必要な場合は、Stack Overflowでそれを個別に探してみることをお勧めします。

最後に、スイングスレッドでスリープするとUIが応答しなくなることに注意してください。また、関連するメモでは、モデルによって発生したイベントは、Swingイベントスレッドにキューイングされます。その仕組みについては、SwingUtilities.invokeLater(...)を参照してください。

+0

素敵な要約:-) – kleopatra

関連する問題