Problème avec les fenêtres modales
satokun
Messages postés
9
Statut
Membre
-
satokun Messages postés 9 Statut Membre -
satokun Messages postés 9 Statut Membre -
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
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
A voir également:
- Problème avec les fenêtres modales
- Fermer toutes les fenetres windows - Guide
- Afficher toutes les fenetres ouvertes windows 11 - Guide
- Il semble que les fenêtres surgissantes sont bloquées, ce qui a stoppé l'exécution de ce scorm. veuillez vérifier les réglages de votre navigateur avant de recommencer. ✓ - Forum Réseaux sociaux
- FENÊTRES SURGISSANTES - Forum MacOS
- Mon pc ouvre des fenetres tout seul ✓ - Forum Virus
3 réponses
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.
"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.
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);
}
}
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 !!
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 !!
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
Tu as les JOptionPane pour ça.
https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
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é