Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Самообновление таймера в JLabel??? (http://forum.oszone.net/showthread.php?t=233573)

Killer_13 26-04-2012 20:39 1906390

Самообновление таймера в JLabel???
 
Подскажите пожалуйста как можно сделать так, чтоб таймер обновлял сам себя? Я вот написал небольшой класик, в котором таймер вставляется в JLabel и обновляется каждую секунду. Мне же нужно создавать такие таймеры из разных компонентов.
В принципе так как я сделал не оч красиво, так как придется писать много кода и в таймер передавать ссылку на объект на котором метка.

Мне же нужно, чтоб я сделал например new ChessTimer и он сам бы себя обновлял.

Спасибо!

Вот класс
Код:

package chess.util;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;

import javax.swing.Timer;

import chess.local.ChessGUILocal_View;
import chess.network.ChessGUINetwork;

public class ChessTimer {

        private int miliseconds = 3590000;
        private NumberFormat format;
       
        private boolean isActive;

        private Timer chessTimer;

        private ChessGUILocal_View chessGUILocal;
        private ChessGUINetwork chessGUINetwork;

        public ChessTimer(ChessGUILocal_View chessGUILocal) {
                this.chessGUILocal = chessGUILocal;
        }

        public ChessTimer(ChessGUINetwork chessGUINetwork) {
                this.chessGUINetwork = chessGUINetwork;
        }
        public ChessTimer() {
                // TODO Auto-generated constructor stub
        }

        public void timerStart() {
                this.isActive = true;
                ActionListener taskPerformer = new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                                if (chessGUILocal != null) {
                                        chessGUILocal.getChessTotalTimerLabel().setText(
                                                        ((miliseconds / 3600000) + ":" + ((miliseconds % 3600000) / 60000) + ":" + ((miliseconds % 60000) / 1000)));
                                        miliseconds += 1000;
                                } else {
                                        // TODO ChessGUINetwork parametr
                                }
                        }
                };
                chessTimer = new Timer(1000, taskPerformer);
                chessTimer.start();
        }

        public void timerStop() {
                this.isActive = false;
                chessTimer.stop();
        }

        public boolean isActive() {
                return isActive;
        }

}



Время: 02:39.

Время: 02:39.
© OSzone.net 2001-