Я немного новый в Java, и я не знаю, как я могу вычитать значение каждую секунду в классе, в данном случае NivelCronometrado, я попытался использовать таймер качания и 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();
}
Edit: Вот код одного из моих аттебсов
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()));
}
* «Я попытался использовать таймер качания и java.util, и я потерпел неудачу». * Где ваша попытка (1) реализовать его и как именно вы потерпели неудачу? 1) И под «попыткой» я подразумеваю [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверенный пример) или [SSCCE] (http://www.sscce.org/) (Short , Self Contained, Correct Example), в отличие от несовместимых, из фрагментов кода контекста. –
Я сделал редактирование, и теперь он добавлен в сообщение. – Kazu
Вы, по-видимому, либо не читали, либо не понимали, что такое MCVE. –