我是Java中的一些新手,我不知道如何在類中每秒減去一個值,在這種情況下,我試圖使用Timer和java.util的Timer,但是我失敗了。如何每秒更改一次課程的價值?
我需要的是一個JPanel顯示倒數計時,NivelCronometrado具有啓動時間和一個JPanel包含這個類。
我在JPanel中創建了一個JLabel來顯示這個時間。
這裏是代碼NivelCronometrado
import clases.logicas.elementos.Puntaje;
import java.util.ArrayList;
public class NivelCronometrado extends Nivel
{
private int tiempo;
public NivelCronometrado(int argTiempo, int argId, int[][] argObstaculos,
int[] argPuntosEstrella, Long argRandomSeed, ArrayList<Puntaje> argPuntajes)
{
super(argId, argObstaculos, argPuntosEstrella, argRandomSeed, argPuntajes);
this.tiempo = argTiempo;
}
public void disminuirTiempo()
{
this.tiempo--;
}
public int getTiempo()
{
return this.tiempo;
}
}
在這裏,我嘗試修改一個JLabel來顯示時間的JPanel的代碼的摘錄:
public void establecerNivel()
{
this.setTextTitulo("Nivel " + this.nivel.getId());
this.setTextPuntosValor("0");
if (this.nivel instanceof NivelRestringido) {
this.setTextEspecialTexto("Movimientos:");
NivelRestringido nivelRestringido = (NivelRestringido)this.nivel;
this.setTextEspecialValor(Integer.toString(nivelRestringido.getIntentos()));
}
else if (this.nivel instanceof NivelCronometrado) {
this.setTextEspecialTexto("Tiempo:");
NivelCronometrado nivelCronometrado = (NivelCronometrado)this.nivel;
/*Here subtract time to nivelCronometrado every second*/
this.setTextEspecialValor(Integer.toString(nivelCronometrado.getTiempo()));
}
this.setTextEstrellaValor1(Integer.toString(this.nivel.getPuntosEstrella()[0]));
this.setTextEstrellaValor2(Integer.toString(this.nivel.getPuntosEstrella()[1]));
this.setTextEstrellaValor3(Integer.toString(this.nivel.getPuntosEstrella()[2]));
this.repaint();
}
編輯:這裏是我的一個嘗試的代碼
else if (this.nivel instanceof NivelCronometrado) {
this.setTextEspecialTexto("Tiempo:");
NivelCronometrado nivelCronometrado = (NivelCronometrado)this.nivel;
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
nivelCronometrado.disminuirTiempo();
}
};
new Timer(1000, taskPerformer).start();
this.setTextEspecialValor(Integer.toString(nivelCronometrado.getTiempo()));
}
*「我嘗試使用swing和java.util的定時器,但是失敗了。」*您的嘗試(1)在哪裏實現它,以及您究竟是如何失敗的? 1)通過「嘗試」,我的意思是[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)或[SSCCE](http://www.sscce.org/)(短,Self Contained,Correct Example),而不是不可編譯的,出於上下文代碼片段。 –
我做了一個編輯,現在它被添加到帖子中。 – Kazu
你顯然要麼沒有閱讀,要麼不明白,什麼是MCVE。 –