Problème avec les fenêtres modales

Fermé
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015 - 14 juin 2015 à 14:00
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015 - 17 juin 2015 à 19:03
salut à tous, j'espère que quelqu'un aura la réponse par ici:

je lance une fenêtre héritant de JDialog depuis la barre d'outils d'un JPanel, cette même fenêtre possède un boutton "recherche" pour lancer une JOptionPane qui récupère une chaine de caractères.
mon problème est le suivant:
quand je définis le JDialog comme "modal" la JOptionpane ne ce lance pas (rien ne s'affiche quand je clique sur "recherche"), par contre quand je la définis comme "non modal" la JOptionpane s'affiche normalement, mais cette manip ne m'aide pas trop dans mon application, donc je souhaite que mes deux fenêtres soient modales.

merci d'avance

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
14 juin 2015 à 14:10
Bonjour,

"je souhaite que mes deux fenêtres soient modales."
Par définition, il ne peut y avoir qu'une fenêtre modale en même temps.

Tu peux par contre, désactiver la modalité de ta première fenêtre pour ouvrir une deuxième fenêtre qui devient modale, et une fois celle-ci fermée redonner la modalité à la première fenêtre.
0
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015
14 juin 2015 à 20:21
salut KX,
j'ai essayé cette méthode auparavant, j'ai tenté de motifier la modalité de la fenêtre JDialog dans la methode "actionPerformed" du boutton recherche (qui lance la deuxième fenêtre modale) mais malheureusement (et bizzarement d'ailleurs) ça n'a pas marché
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
14 juin 2015 à 21:44
Voici un exemple très simple de fenêtre modales imbriquées, j'ai choisi de prendre un niveau N quelconque (par exemple N=5) pour montrer que le code ne change pas quelque soit le niveau d'imbrication.

import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;

public class Test {

    public static void main(String[] args) {

        int N = 5;

        JDialog[] dialogs = new JDialog[N];

        dialogs[0] = new JDialog();
        for (int i = 1; i < N; i++)
            dialogs[i] = new JDialog(dialogs[i - 1], "", ModalityType.DOCUMENT_MODAL);

        for (int i = 0; i < N; i++) {
            JButton button = new JButton(String.valueOf(i));
            if (i != N - 1) {
                JDialog next = dialogs[i + 1];
                button.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        next.setVisible(true);
                    }
                });
            }
            dialogs[i].add(button);
        }

        for (int i = 0; i < N; i++) {
            dialogs[i].pack();
            dialogs[i].setLocationByPlatform(true);
        }

        dialogs[0].setVisible(true);
    }
}
0
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015
16 juin 2015 à 11:32
salut, dsl pour le temps que je mets a répondre (je suis un peu pris par mon boulot) et je te remercie KX pour le mal que tu te donnes à m'éxpliquer.

donc, je veux savoir est ce qu'il y a moyen de "switcher" la modalité entre le JDialog et les JOptionpane, pour éviter de créer des class entières (héritant de JDialog) juste pour des messages d'erreurs, ou pour récuperer une chaine de caractères !!
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
16 juin 2015 à 18:40
uste pour des messages d'erreurs, ou pour récuperer une chaine de caractères !!
Tu as les JOptionPane pour ça.

https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
0
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015
17 juin 2015 à 10:53
justement c'est ça le vrai problème, les JOptionpane ne s'affichent pas lorsque je définis la JDialog comme modal, donc j'ai essayé de désactiver la modalité du JDialogue lorsque je lance la JOptionpane mais ça n'a pas marché !
0
satokun Messages postés 8 Date d'inscription mardi 8 avril 2014 Statut Membre Dernière intervention 17 juin 2015
17 juin 2015 à 19:03
quelqu'un peut-il m'aider !!
0