我是Java的新手,我不知道如何在类中每秒减去一个值,在这种情况下 NivelCronometrado ,我试图使用swing的swing和java .util和我失败了。
我需要的是在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;
}
}
这里是JPanel代码的摘录,我尝试修改JLabel以显示时间:
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()));
}
答案 0 :(得分:-1)
可能重复
Use javax.swing.Timer to make countdown timer in Java
以下是您可以在JPanel中调用的代码段。
public void updateDisplay(String data) {
newdata = data;
randomData.setText(newdata);
}