Abilitare un JFrame dalla chiusura di un'altro JFrame

di il
11 risposte

Abilitare un JFrame dalla chiusura di un'altro JFrame

Ciao a tutti,
Sono uno studente universitario e sono nuovo del Forum, sto iniziando a programmare con Java (BlueJ), ed in questi giorni sto sbattendo su un problema che probabilmente per voiè banale, ma a me sta facendo impazzire.

In Pratica dovrei fare questo:
Nel mio progetto ho tre classi finestra1, finestra2, ed il main.
Avviando il main genero l'istanza di Finestra1, dove si trova un tasto che apre finestra2.
Per evitare di aprire infinite volte finestra2, al tasto che la apre ho legato questa istruzione: this.setEnabled(false);
In questo modo finestra1 rimane disabilitata finquando la riabilito.
nella finestra2 ho un tasto che scrive una frase su una JText bella finestra1.
Fin qui è tutto ok, il problema inizia quando cerco di riabilitare nuovamente la finestra1 con l'evento di chiusura di finestra2.

Nota:
Quando genero l'istanza di finestra2, gli passo anche l'istanza di finestra1 per poter impostare la Jtext.

Le ho provate tutte, ma non capisco dove sbaglio,vi prego di darmi qualche dritta, altrimenti non so come venirne fuori.
Grazie.
Duccio.

11 Risposte

  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Duccio ha scritto:


    Per evitare di aprire infinite volte finestra2, al tasto che la apre ho legato questa istruzione: this.setEnabled(false);
    In questo modo finestra1 rimane disabilitata finquando la riabilito.
    Il this è riferito quindi alla finestra? Generalmente non si usa setEnabled sulle finestre .... e comunque l'approccio è un po' maccheronico. Se vuoi che finestra1 non sia usabile fintanto che finestra2 è visibile, allora sarebbe meglio che finestra2 sia una dialog e soprattutto "modale". Questo perlomeno è l'approccio tipico/giusto per "sospendere" una finestra per chiedere dell'input o mostrare output all'utente.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Ciao andbin,
    Grazie per il tuoi suggerimenti, si il this è riferito alla finestra, e l'approccio maccheronico e dettato dalla mia inesperienza.
    Comunque domani proverò a modificare la classe con il dialog modale.
    Ma a titolo di esercizio, potresti spiegarmi come eseguire un metodo a valle della chiusura si un JFrame?
    Grazie.
    Duccio.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Duccio ha scritto:


    Ma a titolo di esercizio, potresti spiegarmi come eseguire un metodo a valle della chiusura si un JFrame?
    Dato che:

    Duccio ha scritto:


    Quando genero l'istanza di finestra2, gli passo anche l'istanza di finestra1 per poter impostare la Jtext.
    Quindi in finestra2 (quando vuoi chiuderla):

    finestra1.setEnabled(true);
    finestra2.dispose();

    Tutto qui.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Si questo mi è chiaro, quello che non riesco a fare è impostare l'evento di chiusura del frame.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Duccio ha scritto:


    Si questo mi è chiaro, quello che non riesco a fare è impostare l'evento di chiusura del frame.
    sul frame2
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    e poi registri un WindowListener implementando in modo specifico windowClosed.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Ok domani farò qualche prova


    Grazie mille.
    Duccio.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Salve, anche io ho appena iniziato a programmare in java e sto avendo un problema simile al tuo

    Duccio ha scritto:


    Quando genero l'istanza di finestra2, gli passo anche l'istanza di finestra1 per poter impostare la Jtext.
    Quando si genera un'istanza di finestra2 come si fa a passargli anche l'istanza di finestra1 ???
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    xernakam ha scritto:


    Quando si genera un'istanza di finestra2 come si fa a passargli anche l'istanza di finestra1 ???
    Detto così, si mette un costruttore nella classe di finestra2 che ha come parametro la classe di finestra1. Quando si istanzia finestra2 si passa il riferimento alla finestra1.
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    andbin ha scritto:


    Detto così, si mette un costruttore nella classe di finestra2 che ha come parametro la classe di finestra1. Quando si istanzia finestra2 si passa il riferimento alla finestra1.
    Potresti farmi un esempio di codice del costruttore e uno della creazione dell'istanza ??? Grazie mille per l'aiuto
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    public class Finestra1 extends JFrame {
        // ....
    
        public void unMetodo() {
            Finestra2 f2 = new Finestra2(this);
        }
    }
    
    
    public class Finestra2 extends JFrame {
        public Finestra2(Finestra1 f1) {
            // .... presumibilmente, assegna f1 ad una variabile di istanza e/o fa altro con f1
        }
    }
  • Re: Abilitare un JFrame dalla chiusura di un'altro JFrame

    Benissimo ho capito, grazie ancora per l'aiuto
Devi accedere o registrarti per scrivere nel forum
11 risposte