Oppure

Loading
27/07/09 17:45
killer
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 27/07/09 17:46
aaa
27/07/09 18:56
netarrow
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:

public class SecondoFrame extends JFrame {
public SecondoFrame(PrimoFrame p) {
super("secondo frame");
// altro codice
this.setVisible(true);
p.setVisible(false);
}
}


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 27/07/09 18:59
aaa
28/07/09 10:35
killer
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..
Ultima modifica effettuata da killer 28/07/09 10:44
aaa
28/07/09 13:09
netarrow
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.
aaa
28/07/09 16:41
killer
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 ...
aaa
28/07/09 16:43
netarrow
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.
aaa
28/07/09 17:49
killer
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...
aaa
29/07/09 10:42
netarrow
Sicuro di aver provato come ti avevo detto?
A me funziona. (la stessa modifica la devi fare anche in ItaOpenFrame)

[...]
    int time = 0;
    JFrame parent;

    public EngOpenFrame(int time, JFrame parent) {
        this.time = time;
	  this.parent = parent;
    }

    @Override
    public void run() {
        try {
            Thread.sleep(time);
            EnglishPowerLibraryProfessional engFrame = new EnglishPowerLibraryProfessional();
            engFrame.setVisible(true);
	      parent.setVisible(false);
[...]


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 29/07/09 10:43
aaa