Clases en javaFX

Buen día.

Estoy realizando una aplicacion en javaFX y tengo un problemita. tengo una clase que controla una pantalla (principal) y otra clase (llamada reloj) en la cual ejecuto un timer para que realize ciertas tareas repetidamente. La clase "Reloj" tiene variables de globales que se modifican segun se ejecuten los metodos de esta clase.

Mi problema es que desde la clase "Principal" quiero acceder a los valores de las variables globales de la clase "Reloj" para obtener el valor actual de las mismas variables. Lo que me regresa es el valor inicial con el que se declaro en la clase.

Espero puedan ayudarme, lo agradeceria mucho y gracias de antemano.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de julgo

variables locales

pon el código pero suponiendo tal ves estas modificando variables locales con el mismo nombre que las globales y por eso te confundes y crees que las cambias .

El codigo de las 2 clases

Este es el codigo de la clase "Reloj" (pongo solo lo necesario para el ejemplo)

public class Reloj {
         
        Timer timer = new Timer();
        public int segundos;
        public boolean frozen;

      // estos son los metodos que modifican las variables
      public void Start(int pSeg) throws Exception {       
                frozen = false;                    
                    timer.schedule(new MiTarea(), 0, pSeg * 1000 * 60);                              
           
        }

       public void Stop() {            
                frozen = true;                
        }

Y este es el metodo de la clase "Principal"

      public void actualizar(){
            Reloj reloj = new Reloj();

            // aqui me aparece siempre el resultado inicial de frozen que es "false"
           System.out.println(  reloj.frozen  );
     }

Este es el código que, creo, debes poner

public class Reloj {
       
        Timer timer = new Timer();
        private int segundos;
        private boolean frozen;
        public int getSegundos() {
                return segundos;
        }
        public void setSegundos(int segundos) {
                this.segundos = segundos;
        }
        public boolean isFrozen() {
                return frozen;
        }
        public void setFrozen(boolean frozen) {
                this.frozen = frozen;
        }
       
        //estos son los meotodos que modifican las variables
        public void Start(int pSeg) throws Exception {
                setFrozen(false);
                timer.schedule(new MiTarea(), 0, pSeg * 1000 * 60);
        }
       
        public void Stop() {
                setFrozen(true);
        }
       
        public Reloj(int segundos, boolean frozen) {
                super();
                setSegundos(segundos);
                setFrozen(frozen);
        }
}

public class Principal {
       
        public void actualizar(){
                Reloj reloj = new Reloj(10, true);
                // aquí parece siempre el resultado inicial de frozen que es "false"
                System.out.println(reloj.isFrozen());
               
        }
       
        public static void main(String[] args){
                Principal ppal = new Principal();
               
                ppal.actualizar();
               
        }

Creo que sólo necesitabas el constructor, los getters y setters de los atributos de la clase

Imagen de julgo

revisa

nunca invocas al método Stop

public void actualizar(){
             Reloj reloj = new Reloj();
            // aqui me aparece siempre el resultado inicial de frozen que es "false"

// y donde esta el código donde llamas al método Stop??????
            System.out.println(  reloj.frozen  );
      }

Invocación al Stop

public class Principal {
       
        public void actualizar(){
                Reloj reloj = new Reloj(10, true);
                // aquí parece siempre el resultado inicial de frozen que es "false"
                System.out.println(reloj.isFrozen());
                reloj.Stop(); //aquí tienes la invocación
               
        }
       
        public static void main(String[] args){
                Principal ppal = new Principal();
               
                ppal.actualizar();
               
        }