No soy ningun experto tampoco. De hecho, aun estoy aprendiendo como programar en Java y ya estoy yo tambien preguntando por el foro algunas cosillas.
Por lo que veo en tu ejemplo, solo defines la clase "NivelUno". Pero despues haces uso de la clase "NivelUno", "NivelUno2" y "NivelDos1".
Entiendo que por usar un ejemplo y no tu codigo final se te haya pasado por alto.
Despues me pregunto: ¿Cuando se llama a "actionPerformed()"?
Si se llama cada vez que pulsas el boton lo que ocurre es que vuelves a iniciar una nueva clase "NivelUno" con los valores y el contador de pulsaciones a 0.
Mi sugerencia es que hagas que el constructor de "NivelUno" acepte un entero como argumento y lo apliques al contador. Al iniciar en "main()" lo haces con 0. Al pulsar sobre el boton, sumale 1 al contador y haz la nueva pantalla (o clase) pasando el contador.
Prueba algo así:
public class NivelUno {
private JButton boton1;
int a=0, b=0,c=0;
public NivelUno(int contador) {
this.b = contador;
}
public NivelUno() {
}
public actionPerformed(ActionEvent event) {
a++;
c = a+b;
b = c;
if (b <= 5) {
NivelUno nivelUno2 = new NivelUno(b); // Aqui paso el contador en su estado actual a la proxima pantalla.
niveluno2.setBounds(0,0,300,650);
niveluno2.setVisible(true);
niveluno2.setResizable(false);
niveluno2.setLocationRelativeTo(null);
this.setVisible(false);
}
else if (b > 5) {
NivelDos nivelDos = new NivelDos();
nivelDos.setBounds(0,0,300,650);
nivelDos.setVisible(true);
nivelDos.setResizable(false);
nivelDos.setLocationRelativeTo(null);
this.setVisible(false);
}
}
}
public class NivelDos {
}
public static void main() {
NivelUno nivelUno1 = new NivelUno(0);
niveluno1.setBounds(0,0,300,650);
niveluno1.setVisible(true);
niveluno1.setResizable(false);
niveluno1.setLocationRelativeTo(null);
}
Nota tambien que al haber sobrecargado el constructor de la clase "NivelUno" puedes sustituir la linea "
NivelUno nivelUno1 = new NivelUno(0);" de "main()" por esta otra "
NivelUno nivelUno1 = new NivelUno();".
Otra cosa: No entiendo porque haces las operaciones con "a", "b" y "c". Supongo que algo tendrán que ver con tu proyecto, por eso lo dejo como estaba, pero tal vez quieras poner un constructor extra como el siguiente a la clase para mantener los valores al cambiar de pantalla (o clase).
public NivelUno(int rA, int rB, int rC) {
this.a = rA;
this.b = rB;
this.c = rC;
}
Y solo tendrías que cambiar "
NivelUno nivelUno2 = new NivelUno(b);" por "
NivelUno nivelUno2 = new NivelUno(a, b, c);".
Espero que te sirva. Suerte.