IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

[JDialog] Modal or not modal ?


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut [JDialog] Modal or not modal ?
    Bonjour

    Juste un point de détail que je voudrais régler. J'ai crée un JDialog contenant un JLabel et un JProgressBar. Désormais, tout se remplit bien, c'est impeccable. Cependant, j'aurais voulu rendre ce JDialog modal. Or, si je le rend modal, ma JProgressBar ne se remplit pas (????). Pour le moment, voici le constructeur de ma JDialog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    private void initialize() {
    		this.setSize(300, 200);
    		this.setTitle("Processing");
    		this.getContentPane().add(getJContentPane());
    		this.pack();
    		java.awt.Frame []tab = Namek.getFrames();
    		java.awt.Frame main = tab[0];
    		this.setLocation((int)main.getLocation().getX()+((main.getWidth()/2)-150), (int)main.getLocation().getY()+((main.getHeight()/2)-100));
    		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    		this.setResizable(false);
    		this.setDefaultLookAndFeelDecorated(false);
    		this.setAlwaysOnTop(true);
    		this.setVisible(true);
    	}
    Cette solution est satisfaisante mais j'aurais souhaité rendre modal la JDialog malgré tout. Comment donc rendre modal ma JDialog tout en permettant sa JProgressBar de se remplir ?

    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Si tu rend ta boîte de dialogue modale, le code qui suit sa construction ne sera pas exécuté avant que tu ne ferme ta boite de dialogue. Et je suppose que le code de remplissage de ta JProgressBar se trouve après. La solution serait donc de faire ton code de remplissage dans la classe de la boîte de dialogue, à la fin du constructeur. Ou alors de creer ta boîte de dialogue dans un thread séparé.

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Hello aDamas

    Hmm, dire que je viens de résoudre mon problème de remplissage. On va dire qu'un problème en chasse un autre .
    Voici le thread concerné : http://www.developpez.net/forums/vie....php?t=442906.
    Peux-tu y jeter un copu d'oeil pour me préciser ta pensée ?

    @++

    PS : on va croire que j'ai laissé tomber Perl pour Java
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Hello

    J'ai essayé ta solution de créer mon JDialog dans un thread, aDamas.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    thread = new Thread() {
    						public void run() {
    							Thread t = new Thread(){
    								public void run(){
    									wait = new WaitDialog();
    									if(this.isInterrupted()){
    										wait.setVisible(false);
    										wait.dispose();
    									}
    								}
    								public void interrupt(){
    									if(this.isInterrupted()){
    										wait.setVisible(false);
    										wait.dispose();
    									}
    								}
    							};/*WaitDialog wait = new WaitDialog();*/
    							t.start();
    							String s = (String)OntologyChooser.jComboBox.getSelectedItem();
    							SearchOntology so = new SearchOntology(s);
    							Iterator i = Makanko.proteinList.iterator();
    							int size = Makanko.proteinList.size();
    							int cpt = 0;
    							while(i.hasNext()){
    								Protein protein = (Protein)i.next();
    								cpt++;
    								nb = (int)((cpt*100)/size);
    								protein.geneontology_accession = so.getOntologyProtein(protein.nom);
    								if(protein.geneontology_accession.compareTo("")!=0){
    									protein.ontology_definition = so.getOntologyDefinition(protein.geneontology_accession);
    								}
    								LongTraitement action = new LongTraitement();
    					            action.traitementLong();
    							}
    							/*wait.setVisible(false);
    							wait.dispose();*/
    				        }
    				      };
    				      thread.start();
    				      exitForm(evt);
    				}
    Le Jdialog est bien crée, la barre de progression se remplit mais, une fois remplie, la JDialog ne disparaît pas. Pourquoi ? Ai-je loupé une étape ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    A aucun moment tu n'interromps ton thread t, donc aucune chance de passer par la méthode interrupt() qui devrait fermer ta JDialog. Par contre, tu n'avais pas besoin de faire deux threads s'imbriquant, le second (t) aurait suffit(enfin, il me semble). Personnellement, j'aurais fais le setVisible(false) et le dispose là où tu les as mis en commentaire. Mais ta méthode me semble bien, il faut juste interrompre ton thread.

    Bonne soirée.

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Citation Envoyé par aDamas
    A aucun moment tu n'interromps ton thread t, donc aucune chance de passer par la méthode interrupt() qui devrait fermer ta JDialog. Par contre, tu n'avais pas besoin de faire deux threads s'imbriquant, le second (t) aurait suffit(enfin, il me semble). Personnellement, j'aurais fais le setVisible(false) et le dispose là où tu les as mis en commentaire. Mais ta méthode me semble bien, il faut juste interrompre ton thread.

    Bonne soirée.
    Ok, je comprend. Néanmoins, n'étant pas un expert en thread Java, comment interrompts-tu les threads ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    C'est là que ça se corse. Voilà le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    thread.interrupt();	
     
    while(thread.isAlive())	
    		{
    		   try
    		    {
    		    thread.sleep(50);	//pour lui laisser le temps de mourir
    		     }
    		  catch(Exception e){}
    		}
    thread=null;

  8. #8
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Ok, c'est impeccable ça marche.

    Merci à toi aDamas.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  9. #9
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    A charge de revanche la prochaine fois que je fais un code perl...

  10. #10
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Citation Envoyé par aDamas
    A charge de revanche la prochaine fois que je fais un code perl...
    Pas de problème, tu seras le bienvenue !

    GLDavid qui redevient Javaiste.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2011] UserForm modale ou non modale
    Par jeanteynier dans le forum Excel
    Réponses: 4
    Dernier message: 16/05/2014, 17h24
  2. [HTA sans fichier .hta] Dialogue mot de passe modal et non modal
    Par omen999 dans le forum Vos Contributions VBScript
    Réponses: 5
    Dernier message: 11/02/2013, 02h05
  3. [windev11]fenetre modale et non modale
    Par nath-0-0 dans le forum WinDev
    Réponses: 6
    Dernier message: 18/05/2007, 20h44
  4. [Débutant] Rendre un écran modal en non modal
    Par Jahjouh dans le forum MFC
    Réponses: 10
    Dernier message: 22/09/2006, 22h58
  5. [debutant] JDialog non modal
    Par andresan dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 12/05/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo