每隔一分钟,每分钟和每小时更新一个面板

时间:2015-08-22 03:01:22

标签: java swing concurrency jpanel

如何每小时,分钟和秒钟更新一次面板。 给定的代码适用于基于CMD的显示,但不适用于面板。

            if((!_hour.equals(""))&&(!_minute.equals(""))&&(!_second.equals("")))
            {
                frame.dispose();
                //Timer time = new Timer(1000, new TimerListener());
                hour = Integer.parseInt(hours.getText());
                minute = Integer.parseInt(minutes.getText());
                second = Integer.parseInt(seconds.getText());   

                hour = ((hour>=0 && hour<24) ? hour : 0);
                minute = ((minute>=0 && minute<60) ? minute : 0);
                second = ((second>=0 && second<60) ? second : 0);   

                while(second > 0)
                {
                    try
                    {
                        Thread.sleep(1000);
                        second--;
                        timeleft.setText("Time left: " +obj.setTime(hour, minute, second)); 
                        if(second == 0)
                        {
                            while(minute > 0)
                            {
                                try
                                {
                                    Thread.sleep(60000);
                                    minute--;
                                    timeleft.setText("Time left: " +obj.setTime(hour, minute, second)); 
                                        if(minute == 0)
                                        {
                                        while(hour > 0)
                                        {
                                            try
                                            {
                                                Thread.sleep(3600000);
                                                hour--;
                                                timeleft.setText("Time left: " +obj.setTime(hour, minute, second)); 
                                            }
                                            catch(InterruptedException err)
                                            {
                                                err.printStackTrace();
                                            }
                                        }
                                        }                                   
                                }
                                catch(InterruptedException err)
                                {
                                    err.printStackTrace();
                                }
                            }
                        }

                    paneltimer.add(timeleft);                           
                    timer.add(paneltimer);                          
                    timer.setUndecorated(true);
                    timer.setVisible(true);
                    timer.pack();
                    timer.setAlwaysOnTop (true);
                    timer.setLocation(500, 0);  
                    }

                    catch(InterruptedException err)
                    {
                        err.printStackTrace();
                    }
                }
            }

它应该显示这样的东西(但是秒应该是,例如3,如果我输入3但是在我的情况下它最初将输出2)并且面板应该在每次减少秒,分钟和小时时更新它只是保持如下所示:

enter image description here

除此之外,它还有以下例外情况。

enter image description here

请告诉我如何根据我的实施更新面板谢谢!

0 个答案:

没有答案
相关问题