ATTESA TRA UNA FINESTRA E L'ALTRA

di il
7 risposte

ATTESA TRA UNA FINESTRA E L'ALTRA

Salve ragazzi... sto facendo un'applicazione per un esame e ho un problema con la navigazione tra le varie pagine.
Mi spiego meglio... sto completando un lavoro iniziato da 2 miei colleghi di università... quindi ho trovato già impostata la modalità di gestione della navigazione tra frame interni ed esterni... dal menu principale cioè, navigavo da una sezione all'altra avendo sempre la stessa finestra aperta. Questo però mi comportava un errore di navigazione nel momento in cui andavo a lavorare tra le varie pagine.
Per evitare questi problemi ho pensato di chiudere di volta in volta le finestre aperte e riaprirne una nuova. In questo modo però passano un paio di secondi tra la chiusura della prima finestra e l'apertura della seconda.

La mia domanda è: come posso segnalare questa attesa in modo che l'utente non pensi che l'applicazione si sia interrotta nel frattempo? Ho provato a vedere le progressbar, ma non so se fanno al caso mio...
Sapete aiutarmi?
Mi basterebbe anche la classica clessidra sul puntatore del mouse, o il caricamento circolare... solo che ecco... non so come si chiamano in java!

Magari sarà una cavolata, ma non riesco a trovarlo!

Vi posto un po' di codice...per esempio se dalla pagina contatti voglio andare alla home ho il bottone:
icon = new backgroundedButton("/presentation/icone/r_icona.png");        icon.setBounds(20,8);
        icon.setText("Home");
        icon.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
               avviaHome(evt);
            }
        });
        livelloSfondo.add(icon, new Integer(2));
In cui utilizzo la funzione:
private void avviaHome(java.awt.event.ActionEvent evt)    {
        Frame[] f = java.awt.Frame.getFrames();
        for(int i=0; i<f.length; i++) f[i].dispose();  //vado a chiudere le finestre correnti
        PMAIN newPMAIN = new PMAIN();    // e apro quella nuova


        newPMAIN.setVisible(true);


        //chiudo quella corrente
        this.dispose();                     //questo ormai non serve più ma l'ho lasciato
    }
Non so se ci avete capito qualcosa...

Come faccio a segnalare quell'attesa tra chiusura vecchia pagina e apertura nuova?

7 Risposte

  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Semplice puoi usare la proprietà del Frame col setCursor
    
    private void avviaHome(java.awt.event.ActionEvent evt)    {
            Frame[] f = java.awt.Frame.getFrames();
            this.setCursor(Cursor.WAIT_CURSOR);
            for(int i=0; i<f.length; i++) f[i].dispose();  //vado a chiudere le finestre correnti
            PMAIN newPMAIN = new PMAIN();    // e apro quella nuova
    
    
            newPMAIN.setVisible(true);
    
    	   this.setCursor(Cursor.DEFAULT_CURSOR);
            //chiudo quella corrente
            this.dispose();                     //questo ormai non serve più ma l'ho lasciato
        }
    
    Ciao
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Innanzitutto grazie dell'interessamento.
    Perdonami... cosa dovrei ottenere aggiungendo ciò?
    Ho provato ma fa esattamente la stessa cosa di prima... non vedo nè messaggi di attesa nè altra differenza!
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Il cursore dovrebbe diventare una clessidra.
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Allora non mi funziona!
    Il cursore rimane identico!
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Significa che la finestra attiva che ha il focus è un'altra...
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Può essere che sia un frame interno quindi ad avere il focus?
  • Re: ATTESA TRA UNA FINESTRA E L'ALTRA

    Certo...io non so di quanti frame è composta la tua applicazione...
    in teoria il menù principale sarà l'owner della proprietà setCursor del mouse quindi secondo me devi fare:
    
    FramePrincipale.setCursor(Cursor.WAIT_CURSOR);
    //codice di chiusura del frame
    //....
    
    //Codice di apertura nuovo frame
    //....
    
    FramePrincipale.setCursor(Cursor.DEFAULT_CURSOR);
    
    Anch'io ho fatto una cosa del genere...ma si trattava di una sola finestra e il caricamento è pressoché instantaneo tant'è che neanche si vede (anche se i dati sono presi da un DB e nel JInternalFrame deve caricarsi un tabella con dati e component swing e una lista di piccole immagini).

    Ciao.
Devi accedere o registrarti per scrivere nel forum
7 risposte