1

次のようなダイアログ ボックスがあります。

JOptionPane.showMessageDialog(null,"Once medicine is given, measure temperature within 5 minutes." ,"Medication" ,JOptionPane.PLAIN_MESSAGE); 

ユーザーが「OK」を押すと、Jframe に直接移動し、ユーザーにスライダーを使用して温度を入力するように求め、ボタンを押すと次のセットに進みます。

とにかく、ユーザーが「OK」を押した後、目に見えないカウントダウンを作成したいので、Jframeメニューで5分間アイドル状態になった後、JFrameの上に1つの警告ダイアログボックスが表示され、「NEED ATTENTION」のようなメッセージが表示されます。

これはactionListenerを思い出させます。ただし、非物理的な要素によって 5 分間呼び出されます (ボタンのクリックではありません)。

したがって、コードは次のようになります。

JOptionPane.showMessageDialog(null,"Once medicine is given, measure temperature within 5 minutes." ,"Medication" ,JOptionPane.PLAIN_MESSAGE); 


temperature_class temp = new temperature_class(); // going to a different class where the the Jframe is coded

    if (time exceeds 5 minutes) { JOptionPane.showMessageDialog(null, "NEED attention", JOptionPane.WARNING_MESSAGE);}
    else { (do nothing) }

コードの動作:

JOptionPane.showMessageDialog(null,"measure temp" ,"1" ,JOptionPane.PLAIN_MESSAGE); 

int delay = 3000; //milliseconds
 ActionListener taskPerformer = new ActionListener() {
 public void actionPerformed(ActionEvent evt) {

JOptionPane.showMessageDialog(null,"hurry." ,"Bolus Therapy Protocol" ,JOptionPane.PLAIN_MESSAGE); } };
new Timer(delay, taskPerformer).start();

temperature_class temp = new temperature_class();

ただし、1回だけにしてほしい。では、set.Repeats(false) を呼び出すにはどうすればよいでしょうか。

4

3 に答える 3

2

TimerTaskと一緒に使用できますTimer

class PopTask extends TimerTask {
  public void run() {
    JOptionPane.show...
  }
}

次に、タスクをスケジュールする場所:

new Timer().schedule(new PopTask(), 1000*60*5);

cancel()この種のタイマーはメソッドでキャンセルすることもできます

于 2010-10-28T15:43:01.607 に答える
1

How to Use Timersに関する Swing チュートリアルのセクションを読んでください。ダイアログが表示されたら、タイマーを開始します。ダイアログが閉じられると、タイマーが停止します。

TimerTask ではなく Swing Timer を使用して、Timer が起動した場合にコードが EDT で実行されるようにする必要があります。

于 2010-10-28T15:43:27.737 に答える
1

基本的に、最初のオプション ペインが表示された後、Timer. (javax.swingワン)

また、temp がまだ入力されているかどうかを示すクラスレベルの変数も必要です。

JOptionPane.showMessageDialog(...);
tempHasBeenEntered = false;
Timer tim = new Timer(5 * 60 * 1000, new ActionListener() { 
                 public void actionPerformed(ActionEvent e) { 
                     if (!tempHasBeenEntered)
                         JOptionPane.showMessageDialog("Hey, enter the temp!!"); 
                 } 
}
tim.setRepeats(false);
tim.start();

ユーザーがフォームに臨時雇用者を入力したら、フラグを反転する必要があります。

于 2010-10-28T15:45:06.270 に答える