Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Impedire istanze multiple di un JFRAME
Forum - Java - Impedire istanze multiple di un JFRAME

Avatar
Pinnolo (Normal User)
Rookie


Messaggi: 28
Iscritto: 15/03/2008

Segnala al moderatore
Postato alle 0:30
Martedì, 15/05/2012
Salve a tutti, come da titolo vorrei impedire che possano essere create più istanze di uno stesso JFRAME.
Mi spiego meglio:

ho un form principale ed in esso un JBUTTON. Tale pulsante mi apre un secondo frame ogni volta che viene premuto, questo significa che se lo premo 20 volte, mi apre 20 finestre sovrapposte (nonostante sia già stata creata una istanza la prima volta). Come mi consigliate di risolvere?

Per creare il frame utilizzo la riga:
Codice sorgente - presumibilmente Java

  1. FrameSecondario frame = new FrameSecondario()


PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 15:20
Martedì, 15/05/2012
Ti basta salvare in una variabile booleana se la finestra è già stata aperta e, in base al suo valore, decidere se creare o non creare un istanza del JFrame.

Comunque cercando su google si trova la soluzione:
- http://www.applettalk.com/intercettare-chiusura-jframe-vt7 ...
- http://forum.tgmonline.it/showthread.php?17169-Java-interc ...

Ciao.

PM Quote
Avatar
bububs (Normal User)
Expert


Messaggi: 253
Iscritto: 11/03/2010

Segnala al moderatore
Postato alle 15:21
Martedì, 15/05/2012
Basta che lo definisci come variabile generale e lo inizializzi a null.
Poi al click controlli se è null, e se lo è crei l'istanza.
Quando invece andrai a chiudere la finestra andrai a reimpostare il frame a null.
esempio:
-parametro generale:
Codice sorgente - presumibilmente Java

  1. ...
  2. public static FrameSecondario frame =null;
  3. ....


-evento click:
Codice sorgente - presumibilmente Java

  1. ...
  2. if(frame == null)
  3.     frame = new FrameSecondario();
  4. ...


-evento chiusura finestra:
Codice sorgente - presumibilmente Plain Text

  1. ...
  2. NomeClasse.frame = null;
  3. ...


Ultima modifica effettuata da bububs il 15/05/2012 alle 15:24
PM Quote
Avatar
davide94 (Member)
Rookie


Messaggi: 23
Iscritto: 09/11/2011

Segnala al moderatore
Postato alle 9:30
Domenica, 20/05/2012
bububs ha ragione.
Questo tipo di problema è definito in un design pattern, chiamato singleton.
Ti consiglio di darci una occhiata

PM Quote