Visualizzazione dei risultati da 1 a 6 su 6

Discussione: JDialog Bloccata

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305

    JDialog Bloccata

    Salve ho un problema con una classe che implementa JDialog. Praticamente questo è il costrutttore
    codice:
      /**
         * Costruttore con Parametri, da utilizzare quando si vuole che la scheda
         * cliente blocchi le altre finestre
         * @param owner
         * @param model
         * @param cliente
         */
        public FormSchedaCliente(JFrame owner,ListaClientiTableModel model,ClienteDB cliente){
            super(owner,ModalityType.DOCUMENT_MODAL);
            this.setTitle("Scheda Cliente ");
            this.cliente = cliente;
            this.initComponents();
            this.model=model;
            this.textfieldNome.setText(cliente.getNome());
            this.textfieldCognome.setText(cliente.getCognome());
            this.textfieldTelefono.setText(cliente.getTelefono());
            this.textfieldMail.setText(cliente.getMail());
            this.textfieldDataApp.setText(dateformat.format(cliente
                    .getDataAppuntamento()));
            this.textfieldOraApp.setText(orarioFormat.format(cliente.getOraAppuntamento()));
            this.textfieldPrimoCont.setText(cliente.getPrimo_contatto("dd/MMM/yyyy HH:mm:ss"));
            
        }
    il fatto è che oltre a bloccare la finestra superiore , blocca anche i listener dei pulsanti , ovvero quando premo sui pulsanti di questa Jdialog non succede nulla

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    il fatto è che oltre a bloccare la finestra superiore , blocca anche i listener dei pulsanti , ovvero quando premo sui pulsanti di questa Jdialog non succede nulla
    Dovresti mostrare qualche altro pezzo di codice .... una dialog anche modale non blocca di per sé gli eventi (chiaramente a parte la/e finestra/e rispetto cui è modale). Meno che mai gli eventi relativi alla dialog stessa.
    Quindi ci deve essere altro che non è evidente solo da quello che possiamo vedere qui ora.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Dovresti mostrare qualche altro pezzo di codice .... una dialog anche modale non blocca di per sé gli eventi (chiaramente a parte la/e finestra/e rispetto cui è modale). Meno che mai gli eventi relativi alla dialog stessa.
    Quindi ci deve essere altro che non è evidente solo da quello che possiamo vedere qui ora.

    volevo chiedere se jdialog in modalita model blocca il thread che la esegue. la parte precedente é risolta. adesso ho bisogno di capire questa cosa

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    volevo chiedere se jdialog in modalita model blocca il thread che la esegue.
    Sì, lo precisa anche la documentazione:

    Notes for modal dialogs.
    setVisible(true): If the dialog is not already visible, this call will not return until the dialog is hidden by calling setVisible(false) or dispose.

    E poi aggiunge anche:
    It is OK to call this method from the event dispatching thread because the toolkit ensures that other events are not blocked while this method is blocked.

    Se invochi setVisible(true) nel contesto del EDT, non blocchi altri eventi, perché il "loop" degli eventi continua ad essere gestito anche lì dentro in quel contesto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sì, lo precisa anche la documentazione:

    Notes for modal dialogs.
    setVisible(true): If the dialog is not already visible, this call will not return until the dialog is hidden by calling setVisible(false) or dispose.

    E poi aggiunge anche:
    It is OK to call this method from the event dispatching thread because the toolkit ensures that other events are not blocked while this method is blocked.

    Se invochi setVisible(true) nel contesto del EDT, non blocchi altri eventi, perché il "loop" degli eventi continua ad essere gestito anche lì dentro in quel contesto.
    Nello specifico supponiamo che la mia jdialog sia in document modal e che quindi non blocca tutts le top level container , in quel caso le altre da chi son gestite se l' edt é bloccato?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    in quel caso le altre da chi son gestite se l' edt é bloccato?
    Il EDT non è "bloccato"! La invocazione di setVisible non ritorna, questo sì ma tutto il resto che fa normalmente il EDT, ovvero principalmente la gestione del "loop" degli eventi (poi anche disegno dei componenti, ecc...) continua dentro il setVisible.

    Insomma, invochi setVisible(true) nel contesto del EDT. È solo il metodo che non ritorna subito. Ma dentro è stato fatto in modo da continuare tutta la gestione degli eventi, che continua quindi ad essere nel EDT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.