【问题标题】:Blackberry - How to make a count down timer and display on screen when we click on the button黑莓 - 当我们点击按钮时如何制作倒数计时器并显示在屏幕上
【发布时间】:2012-05-21 19:08:07
【问题描述】:

我想在单击屏幕上的按钮时显示倒数计时器。如果我们点击按钮,请给我发送显示计时器的代码。

【问题讨论】:

    标签: blackberry timer blackberry-jde


    【解决方案1】:

    试试这个代码 -

    import java.util.Timer;
    import java.util.TimerTask;
    import net.rim.device.api.ui.Field;
    import net.rim.device.api.ui.FieldChangeListener;
    import net.rim.device.api.ui.UiApplication;
    import net.rim.device.api.ui.component.ButtonField;
    import net.rim.device.api.ui.component.Dialog;
    import net.rim.device.api.ui.component.RichTextField;
    import net.rim.device.api.ui.container.HorizontalFieldManager;
    import net.rim.device.api.ui.container.MainScreen;
    
    public class stopwatch extends MainScreen  
    {   
    
        private RichTextField _chronometer;
        Timer timer;
        private int second = 0, minute = 0, hour = 0;
        private boolean _sec = false, _min = false, _hou = false;
        ButtonField record,stop;
    
        public stopwatch()
        {
    
            record=new ButtonField("Start");
            stop=new ButtonField("Stop");
    
            _chronometer = new RichTextField("0" + hour + ":0" + minute + ":0" + second, RichTextField.TEXT_ALIGN_HCENTER | Field.NON_FOCUSABLE);
            add(_chronometer);
    
            HorizontalFieldManager hfm=new HorizontalFieldManager(FIELD_HCENTER);
            record.setMargin(net.rim.device.api.system.Display.getHeight()/2,0,0,0);
            stop.setMargin(net.rim.device.api.system.Display.getHeight()/2,0,0,20);
            hfm.add(record);
    
            hfm.add(stop);
    
            add(hfm);
    
    
            FieldChangeListener listener = new FieldChangeListener() {
                public void fieldChanged(Field field, int context) {
    
                    if(field==record){
                         try 
                            {
    
                                try {
                                    timer = new Timer();
                                    resetChronometer();
                                    timer.scheduleAtFixedRate(new Chronometer(), 1000, 1000);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }  
                            catch (Exception e) 
                            {
                                Dialog.alert(e.toString());
                            }
                    }
                    if(field==stop){
    
                            try 
                            {
    
                                    timer.cancel();
    
                            } 
                            catch (Exception e) 
                            {
                                Dialog.alert(e.toString());
                            }
    
    
    
    
    
                    }
    
                }
            };
            record.setChangeListener(listener);
            stop.setChangeListener(listener);
    
        }
    
            private class Chronometer extends TimerTask {
                public void run() {
                    try {
                        second++;
                        UiApplication.getUiApplication().invokeLater(new Runnable() {
                            public void run() {
    
                                if (_min == true) {
                                    _min = false;
                                    minute = minute + 1;
                                    second = 0;
                                }
    
                                if (_hou == true) {
                                    _hou = false;
                                    hour = hour + 1;
                                    minute = 0;
                                }
    
                                if (second == 59) {
                                    _min = true;
                                    if (minute == 59) {
                                        _hou = true;
                                    }
                                }
    
                                if (second <= 9 && minute <= 9 && hour <= 9) {
                                    _chronometer.setText("0" + hour + ":0" + minute + ":0" + second);
                                }
    
                                if (second > 9 && minute <= 9 && hour <= 9) {
                                    _chronometer.setText("0" + hour + ":0" + minute + ":" + second);
                                }
    
                                if (second <= 9 && minute > 9 && hour <= 9) {
                                    _chronometer.setText("0" + hour + ":" + minute + ":0" + second);
                                }
    
                                if (second <= 9 && minute <= 9 && hour > 9) {
                                    _chronometer.setText("" + hour + ":0" + minute + ":0" + second);
                                }
    
                                if (second > 9 && minute > 9 && hour > 9) {
                                    _chronometer.setText(hour + ":" + minute + ":" + second);
                                }
    
                                if (second > 9 && minute > 9 && hour <= 9) {
                                    _chronometer.setText("0" + hour + ":" + minute + ":" + second);
                                }
    
                                if (second > 9 && minute <= 9 && hour > 9) {
                                    _chronometer.setText("" + hour + ":0" + minute + ":" + second);
                                }
    
                                if (second <= 9 && minute > 9 && hour > 9) {
                                    _chronometer.setText("0" + hour + ":" + minute + ":" + second);
                                }
    
                                // rt.setText(hour+":"+minute+":"+second);
                            }
                        });
    
                        // timer.cancel();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
    
            public void resetChronometer() {
              _chronometer.setText("00:00:00");
              second = 0;
              minute = 0;
              hour = 0;
    }
    
    }
    

    【讨论】:

    • 非常感谢。但我无法在屏幕上显示任何计时器。我得到了黑屏。我在 myscreen 类中创建了上面的代码。以及计时器类中的以下代码..我在屏幕上创建了按钮,并在您发送时添加了尝试和捕获。但我得到任何屏幕。请帮助我并发送完整的代码
    • 你在屏幕上添加了_chronometer?
    • 是的,我可以显示我添加为 _chronomter 的文本,但没有时间。只是简单地显示 00:00:00
    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多