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 - addWindowListener
Forum - Java - addWindowListener

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 19:45
Lunedì, 27/07/2009
ciao...come posso programmare la chiusura di un frame all'apertura di un altro Frame?...cioè dovrebbe essere un genere di sincronizzazione...nel momento in cui apro il 2Frame il 1Frame verrà chiuso automaticamente....ho provato sia nel main che nel costruttore del 2 frame a fare questo..  PrimoFrame p = new PrimoFrame; p.setVisible(false);  non accade assolutamente nulla poiche il 1 Frame resta aperto...come faccio !?
per favore postatemi il codice....sto impazzendo...grazie...

Ultima modifica effettuata da killer il 27/07/2009 alle 19:46
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 20:56
Lunedì, 27/07/2009
sicuro di richiamare setVisible(false) sull'istanza dell'oggetto visualizzato a schermo?
se dici che dentro il costruttore del secondo frame metti questo:

PrimoFrame p = new PrimoFrame();
p.setVisible(false);

sembra che tu renda invisibile una nuova istanza e non una precedentemente creata.
devi semplicemente passare a parametro l'istanza del primo frame e renderla invisibile quando è visibile l'altra.

se proprio vuoi il codice:

Codice sorgente - presumibilmente Java

  1. public class SecondoFrame extends JFrame {
  2. public SecondoFrame(PrimoFrame p) {
  3. super("secondo frame");
  4. // altro codice
  5. this.setVisible(true);
  6. p.setVisible(false);
  7. }
  8. }



Oppure già stai provando così?

il WIndowListener non ho capito come lo usi? (lo citi solo nel titolo)

cosè che vuoi fare in realtà? forse è più pulito usare una JDialog o invece di più frame più pannelli visualizzabili con un CardLayout o un DesktopPane con gegli InternalFrame.

Ultima modifica effettuata da netarrow il 27/07/2009 alle 20:59
PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 12:35
Martedì, 28/07/2009
public SecondoFrame(PrimoFrame p) {
super("secondo frame");
// altro codice
this.setVisible(true);
p.setVisible(false);
}
}

Un attimo...non capisco cosa  vuol dire secondo frame all'interno di super( o meglio cosa devo scrivere ).... e non capisco il this dopo il super cosa faccia in questo caso visto che il secondo Frame si avvia perche e istanziato e impostato con il valore true della visibilita nel suo main..

Cmq vi posto il programma completo che so riuscito a fare fino ad adesso .......
Entrate nella cartella src dove ci sono le classi e i frame e date un okkiata...magari mi spiegate meglio come chiudere il 1Frame all'apertura del 2Frame.pero con il metodo dispose() suppongo poiche  con la visibilita impostata a false rimane in esecuzione il processo quando lo devo definitivamente terminare..

Premetto che il Frame di nome LogIn.form e il primo ad avviarsi serve per l'autenticazione..


killer ha allegato un file: PowerLibraryProfessional.zip (101213 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da killer il 28/07/2009 alle 12:44
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 15:09
Martedì, 28/07/2009
Testo quotato


Un attimo...non capisco cosa  vuol dire secondo frame all'interno di super( o meglio cosa devo scrivere ).... e non capisco il this dopo il super cosa faccia in questo caso visto che il secondo Frame si avvia perche e istanziato e impostato con il valore true della visibilita nel suo main..



super richiama il costruttore della super classe, in quel caso imposta il titolo.
sul this.setVisible è la perchè era un esempio generale, poi il codice tuo puoi organizzarlo come preferisci.

PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 18:41
Martedì, 28/07/2009
ah ok....ma  ho postato il programma completo del programma...mi puo aiutare a risolverlo ? perche per fare questa cosa, io utilizzo i Thread pure...!! e nel costruttore non potrei farlo...dopo  il super("titolo"); non funziona gia provato...come posso fare....ho postato apposta il source per farvelo vedere...fatemi sapere ...

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:43
Martedì, 28/07/2009
sono su mac e ho solo java 5, tu a quanto pare usi java 6 visto che non mi trova alcune classi.
se avrà un buco proverò a farlo girare.

PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 19:49
Martedì, 28/07/2009
gia....!!  puoi tranquillamente scaricare l'ultima versiona di java...
inoltre cerca di aiutarmi il piu presto possibile perche sto impazzendo...sono mesi che non riesco a risolvere questa cosa....
grazie...

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 12:42
Mercoledì, 29/07/2009
Sicuro di aver provato come ti avevo detto?
A me funziona. (la stessa modifica la devi fare anche in  ItaOpenFrame)

Codice sorgente - presumibilmente Java

  1. [...]
  2.     int time = 0;
  3.     JFrame parent;
  4.  
  5.     public EngOpenFrame(int time, JFrame parent) {
  6.         this.time = time;
  7.           this.parent = parent;
  8.     }
  9.  
  10.     @Override
  11.     public void run() {
  12.         try {
  13.             Thread.sleep(time);
  14.             EnglishPowerLibraryProfessional engFrame = new EnglishPowerLibraryProfessional();
  15.             engFrame.setVisible(true);
  16.               parent.setVisible(false);
  17. [...]



Ma quei thread a cosa servirebbero? cioè fai una progress bar fittizia? aspetti 22 secondi inutilmente prima di aprire una finestra vuota solo per fare la progress bar? :-|
Inoltre sarebbe conveniente usare un pò di ereditarierà.

ah si altra cosa, la finestra di login non è chiudibile aggiungigli un setDefaultCloseOperation(EXIT_ON_CLOSE);

Ultima modifica effettuata da netarrow il 29/07/2009 alle 12:43
PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 13:39
Mercoledì, 29/07/2009
1)il software che intendo realizzare è una Libreria
2)Frame LogIn Non deve essere chiudibile.....lo impostato io
3)le finestre vuote le ho impostate io solo per rendermi conto se funzionava la chiusura del Frame LogIn
4)ho impostato cmunque due frame italiano inglese...per la scelta della lingua nel LogInù



cmq adesso provo e vedo se funziona....
ps: Perche hai dichiarato un oggetto parent di tipo JFrame se il tipo cui appartiene é LogIn ?  forse questo sbagliavo no !? ...  facevo cosi io !!     LogIn log = new LogIn();
                                                                 log.setVisible(false);   in questa maniera non mi funzionava proprio....spiegami a quale finestra faccia riferimento quella dichiarazione JFrame parent;
poi io  il costruttore lo rikiamo dalla classe LogIn inserendo il parametro del tempo passandolo al costruttore della classe itaOpenFrame e poi ? avendo aggiunto JFrame parent, quale oggetto gli devo passare? non capisco ancora bene...spiegami meglio tutto ..grazie ancora

Ultima modifica effettuata da killer il 29/07/2009 alle 13:54
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo