2011-02-02 9 views
5

Ho un'applicazione Java swing che carica una pagina web. A volte, la pagina web richiede un po 'di tempo per essere caricata a seconda della connessione Internet dell'utente.Java Swing: schermata di caricamento modale?

Voglio bloccare questo frame finché la pagina non è stata caricata.

risposta

5

L'opzione più semplice è quella di apparire una finestra di dialogo modale:

JDialog modalDialog = new JDialog(frame, "Busy", ModalityType.DOCUMENT_MODAL); 
modalDialog.setSize(200, 150); 
modalDialog.setLocationRelativeTo(frame); 
modalDialog.setVisible(true); 

si consiglia di mettere una barra di avanzamento in esso.

0

È possibile ... Ho trovato una soluzione.

Ho avuto anche questo problema.

Quando si crea la finestra di dialogo modale, come proposto da another answer, solo l'utente può chiuderla.
È utile solo se è possibile eseguirlo quando il caricamento termina.

[UPDATE]

Ecco il mio Classe Finestra

public final class Loading extends javax.swing.JDialog { 

    /* 
    * Creates new form Loading 
    * @param parent 
    * @param modal 
    */ 
    public Loading(java.awt.Frame parent,boolean modal) { 
     super(parent, modal); 
     initComponents(); 
    } 

    private void formWindowActivated(java.awt.event.WindowEvent evt) {          
     //Code to execute while loading 
     this.dispose(); 
    }              
} 

E qui si chiamano così.

Loading l = new Loading(this/*In case you class is a frame, null otherwise*/, true); 
l.setVisible(true); 

E dopo aver eseguito il codice di caricamento, chiude e continua il codice sulla classe padre.

+0

È possibile fornire all'attività di caricamento un callback per richiamare il metodo di eliminazione nella finestra di dialogo. – Daniel