OVH Cloud OVH Cloud

Comment programmer une fenêtre modale ?

5 réponses
Avatar
theBrave
Bonjour,

Je programme une petite application qui se charge de saisir des RDV.
Il y a une petite fen=EAtre qui liste les items d=E9j=E0 entr=E9s, un
bouton ajouter qui en lance une seconde.
Le probl=E8me c'est que la seconde fen=EAtre rend tout de suite la main
=E0 la premi=E8re des que j'instancie son constructeur.

Comment faire proprement ?

Merci d'avance

Jean

5 réponses

Avatar
David
Le Sun, 05 Feb 2006 12:17:46 -0800, theBrave a écrit :

Bonjour,

Je programme une petite application qui se charge de saisir des RDV. Il y
a une petite fenêtre qui liste les items déjà entrés, un bouton
ajouter qui en lance une seconde. Le problème c'est que la seconde
fenêtre rend tout de suite la main à la première des que j'instancie
son constructeur.

Comment faire proprement ?


Utiliser la class Dialog en awt ou son équivalent swing qui prévoit la
modalité dans leur constructeur ?

Avatar
theBrave
Ok, la fenetre bloque l'application, mais pas le thread.
Je voudrais appeler une fonction statique qui me rendrait un evenement:
Event monEvent = EventDialog.getAnEvent();

Je vois pas trop comment faire ...

Jean
Avatar
David
Le Mon, 06 Feb 2006 07:29:21 -0800, theBrave a écrit :

Ok, la fenetre bloque l'application, mais pas le thread. Je voudrais
appeler une fonction statique qui me rendrait un evenement: Event monEvent
= EventDialog.getAnEvent();

Je vois pas trop comment faire ...



au pire tu crées une classe MaFrame extends JFrame qui dans son
constructeur reçoit un "Component" parent

Ensuite tu gère la modalité "à la main" avec des setEnable(), toFront() ...

Avatar
Simon OUALID
theBrave wrote:
Ok, la fenetre bloque l'application, mais pas le thread.
Je voudrais appeler une fonction statique qui me rendrait un evenement:
Event monEvent = EventDialog.getAnEvent();

Je vois pas trop comment faire ...

Jean



Avec un parent et un "true" dans le constructeur.

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JDialog.html#JDialog(java.awt.Dialog,%20boolean)

Ca bloque le thread appelant jusqu'au dispose() ou setVisible(false) de
la dialogue.

Tu peux donc l'implémenter dans une méthode statique qui te renverra par
exemple le résultat de la saisie de l'utilisateur.

Après toute cette mécanique, ça vaut le coup de la factoriser (à la
façon des méthodes statiques de JOptionPane).

Symon

Avatar
TestMan
Bonjour,

Outre le fait que personellement, je déteste les boites de dialogue et
préfère voir une inclusion visuelle pour indiquer un nouveau contexte de
saisie (affaire de gout), La modalité des boites ce choisir en 1.5 lors
de la creation de l'objet ...

Par contre, la 1.6 apporte des subtilités dans la gestion de la modalité
vraiment trés interessantes :
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/modality/

PS : Vive le cheval! A noter que j'aime bien les dauphins ... oui, car
eux il parrait qu'ils ont leur propre langue, et qu'elle serait même
trés proche du XML ;-)

A+

TM

Bonjour,

Je programme une petite application qui se charge de saisir des RDV.
Il y a une petite fenêtre qui liste les items déjà entrés, un
bouton ajouter qui en lance une seconde.
Le problème c'est que la seconde fenêtre rend tout de suite la main
à la première des que j'instancie son constructeur.

Comment faire proprement ?

Merci d'avance

Jean