0

このコードでは、while ループで時刻を確認し、時刻が午後 7 時である場合、メッセージ ボックスを表示することになっています。

public void actionPerformed(ActionEvent arg0) {

    Enable.setEnabled(false);
    Date d = new Date();
    int hrs = d.getHours();
    int mins = d.getMinutes();

        while((1 + 1) == 2) { 
            if(hrs == 19 && mins == 21) {
                JOptionPane.showMessageDialog(frame,
                    "It's 7:21 PM!",
                    "Alerts",
                    JOptionPane.WARNING_MESSAGE);
                System.exit(0);
                break;
            }
        }
}

ボタンを押すと、そのコードが実行されます。午後 7 時になる前にボタンを押すと、GUI がフリーズし (それはどうでもいいことです)、午後 7 時になるとメッセージ ボックスが表示されなくなります。午後 7 時にボタンをクリックする、メッセージ ボックスが表示されます...

4

3 に答える 3

1

while((1 + 1) == 2) を実行して無限ループを取得する代わりに、次のようにすることができます: while(true) または for(;;) そして、この質問は、あなたの時間と時間に関する詳細な情報やコードがなければ答えられません。最小変数

于 2013-07-17T00:32:22.777 に答える
0

更新する必要がありhrsminsそれ以外の場合はループ内でそれらの初期化が必要です。ボタンを押すと、ボタンが押された時間が常に保持されると思います。

これが、午後 7 時にプッシュされたときに機能する理由ですが、それ以外の場合は機能しません。

だから、このようなことをしてください

while(true) //Equivalent to what you had 
{ 
      if(hrs == 19 && mins == 00) {
           JOptionPane.showMessageDialog(frame,
               "It's 7:00 PM!",
               "Time Alert",
               JOptionPane.WARNING_MESSAGE);
           System.exit(0);
           break;
       }
       //Refresh your hrs and mins here
       Calendar calendar = GregorianCalendar.getInstance(); // Probably dont really want to actually get an instance every time
       hrs = calendar.get(Calendar.HOUR_OF_DAY);
       mins = calendar.get(Calendar.MINUTE);
}
于 2013-07-17T00:39:28.353 に答える