Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SrTrp en 7 Marzo 2019, 06:27 am



Título: Como puedo tener 1 ventana(o clase) global
Publicado por: SrTrp en 7 Marzo 2019, 06:27 am
A lo que me refiero con una ventana global(que siempre este trabajando) es decir tengo un jframe que lo abro(en teoria no se abre la hago visible) con la clase principal de mi proyecto así:
Código
  1. Formprin frm = new Formprin();
  2.        frm.setVisible(true);
  3.  
pero quiero conservar ese objeto ya que al crearlo tengo varias variables globales.
Ahora en ese form tengo un boton que hace lo siguiente:
Código
  1. Form2 ft = new Form2 ();
  2.        ft.setVisible(true);
  3.        ft.setTitle("Abrio : "+this.contador+">");
  4.        this.contador++;
  5.        this.setVisible(false);
  6.  
aqui todo bien hago visible mi otro formulario y invisible el formulario principal ahora cuando lo cierro el otro formulario quiero que se vuelva visible el principal pero en teoria debería llevar el contador 1 pero no lo hace sigue en 0 pero esto lo se por que creo otro objeto, y aqui es a lo que va mi pregunta como podria hacer esto solo se me ocurre desechar cada vez el objeto y pasarme todos los datos de variable de un lado hacia otro..


Título: Re: Como puedo tener 1 ventana(o clase) global
Publicado por: rub'n en 7 Marzo 2019, 23:44 pm
Mmmm, me suena a aun Simple Singleton (double checked locking) :P, logrando que la instancia del formulario que desees se mantenga durante toda la vida de la app

Código
  1.    private TuForm() {}
  2.    private static volatile TuForm instance;
  3.    public static TuForm getInstance() {
  4.        if(Objects.isNull(instance)) {
  5.            synchronized (TuForm.class) {
  6.                if(Objects.isNull(instance)) {
  7.                    instance = new TuForm();
  8.                }
  9.            }
  10.        }
  11.        return instance;
  12.    }
  13.  

Cuando instancies solo haz

Código
  1. final TuForm form = TuForm.getInstance();