Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Система реального времени, таймер 
:(
    Опции темы
antonkonikov
Дата 22.10.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.3.2009
Где: Украна, Донецк

Репутация: нет
Всего: нет



Доброго времени суток. Только начал изучать Java. Дело в том что мне нужно подключить таймер, но так чтобы он начинал счет по кнопки. 
Вот функция таймера:
Код

 public class tl extends JTextField {
          
        private static final long serialVersionUID = 1L;
            public Timer timer = new Timer();

            public tl() {
                timer.scheduleAtFixedRate(timerTask, 0, 1000);
                
            }
            private TimerTask timerTask = new TimerTask() {
                private volatile int time = -1;
                private Runnable refresher = new Runnable() {
                    public void run (){
                        int t = time;
                        DecimalFormat decimalFormat = new DecimalFormat("00");
                      //  tl.this.setText(decimalFormat.format(t / 60) + ":" + decimalFormat.format(t % 60));
                        CurTime.setText("CurTime "+decimalFormat.format(t / 60) + ":" + decimalFormat.format(t % 60));
                  
                    }

                };
                public void run () {
                    time++;
                    SwingUtilities.invokeLater(refresher);
                }

            };

            public void StopTimer() {
                timer.cancel();
            }
    
        }


Ну вот здесь я реализовываю действия по нажатию кнопок:
Код

public class ButtonEngine implements ActionListener{
    
    Kurs parent;
    
     
    
    ButtonEngine(Kurs parent){
        this.parent=parent;
        //До запуска активны "Старт" и "Помощь"
        parent.start.setEnabled(true);
        parent.pause.setEnabled(false);
        parent.stop.setEnabled(false);
        
        
    }
    
    public void actionPerformed(ActionEvent e){

        Object act =  e.getSource();
        
        if (act == parent.start){
            parent.start.setEnabled(false);
            parent.pause.setEnabled(true);
            parent.stop.setEnabled(true);
            //parent.windowContent.add(parent.CurTime);
            
        }else if (act == parent.pause){
            parent.start.setEnabled(false);
            parent.pause.setEnabled(true);
            parent.stop.setEnabled(true);
            
        }else if (act == parent.stop){
            //stop
            parent.start.setEnabled(true);
            parent.pause.setEnabled(false);
            parent.stop.setEnabled(false);
            parent.windowContent.add(parent.CurTime);
        }else if (act == parent.help){
            //help
            JOptionPane.showConfirmDialog(null,
                    "Здесь просто текст", "Help",
                    JOptionPane.PLAIN_MESSAGE);
        }else if(act == parent.exit){
            System.exit(0);
            
        }
        
    }

    
    //
    
}



Объясните неграмотному))))
PM MAIL WWW ICQ   Вверх
antonkonikov
Дата 23.10.2012, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.3.2009
Где: Украна, Донецк

Репутация: нет
Всего: нет



Код

private void startTimer(){

        parent.CurTime.setText("CurTime 00:00:00");
        lStartTime = System.currentTimeMillis();
        

        tTimer = new Timer(100,new ActionListener() {
            long min = 0;
            long sec = 0;
            long milis = 0;
            long now;
            public synchronized void actionPerformed(ActionEvent e) {

                now = System.currentTimeMillis() - lStartTime;
                min = now/60000;
                sec = now%60000/1000;
                milis = (now%1000)/10;
                parent.CurTime.setText(String.format("CurTime %02d:%02d:%02d", (int)min,(int)sec,(int)milis));

            }

        });

        tTimer.start();
    }

 

    private void stopTimer(){

        try {

            tTimer.stop();

        } catch (Exception e) {

        }


    }
    


Подскажите пожалуйста как сделать паузу, чтобы можно было потом возобновить счет.
PM MAIL WWW ICQ   Вверх
priam220
Дата 23.10.2012, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Паузы в таймере нет. Ее нужно самому реализовывать. TimerTask - обертка Runnable. Есть много примеров, как приостановить выполнение потока.
Плюс вместо таймера лучше ScheduledExecutorService: 
Цитата

Timer can be sensitive to changes in the system clock, ScheduledThreadPoolExecutor isn't
Timer has only one execution thread, so long-running task can delay other tasks. ScheduledThreadPoolExecutor can be configured with any number of threads. Furthermore, you have full control over created threads, if you want (by providing ThreadFactory)
runtime exceptions thrown in TimerTask kill that one thread, thus making Timer dead :-( ... i.e. scheduled tasks will not run anymore. ScheduledThreadExecutor not only catches runtime exceptions, but it lets you handle them if you want (by overriding afterExecute method from ThreadPoolExecutor). Task which threw exception will be canceled, but other tasks will continue to run.
первоисточник

 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3363 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.