Войти

Показать полную графическую версию : Самообновление таймера в JLabel???


Killer_13
26-04-2012, 20:39
Подскажите пожалуйста как можно сделать так, чтоб таймер обновлял сам себя? Я вот написал небольшой класик, в котором таймер вставляется в 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;
}

}




© OSzone.net 2001-2012