Avoir une ihm modal mais qui ne bloque pas le programme

Résolu
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005 - 30 mai 2005 à 16:25
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005 - 3 juin 2005 à 09:00
Bonjour à tous,

Voici mon problème:
Je voudrai avoir une IHM qui est bloquée par le biais d'une JDialog, donc modal (pour l'instant pas de problème). Mais, cette fenetre ne doit pas bloquer le déroulement du programme (?!) . De plus, je ne peut passer par des Threads ...

En fait, je veux faire 1 requete à une base de données qui peut etre assez longue (2-3 secondes) et ne pas permettre à l'utilisateur de manipuler l'interface graphique.

Je suis à l'écoute de vos commentaires et de suggestions.

Merci

9 réponses

nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005
2 juin 2005 à 10:08
J'ai enfin trouvée le truc:

Je vai essayer de l'expliquer, mais c pas facile.

Alors java qd il gére un événement, il ne peut en géré d'autres, il met alors les événements en attente. Donc je ne pouvais voir ma fenetre, parce qu'il était impossible de la rédessiner avant la fin du traitement du 1er événement.

Rappel: ma fenetre d'attente devai s'ouvrir qd j'appuyé sur un boutton, et à la fin du traitement se fermer.

La soilution est de tout mettre dans des Thread et surtout d'afficher la fenetre d'attente (par un setVisible par ex) par le biais d'un autre Thread.

et Merci pour ton aide GodConan

a++
3
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
30 mai 2005 à 19:23
et bien c est une progress bar que tu veux non ?!!

GodConan
0
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005
31 mai 2005 à 09:03
pas vraiment, j'veut juste une JDialog avec une texte tout simple: "conexion en cours..."

Je lance cette JDialog avant de faire la connexion, puis je bloque l'ihm jusqu'au moment ou j reçois les données de ma connexion.

J'ai eu une nouvelle idée qui consiste à faire la connexion en passant par les événements de ma JDialog. Par exemple, lorsque j'ouvre ma Jdialog, je fait la connexion (événement windowOpened). Or le problème c'est que seul le titre de ma JDialog apparait et non le contenu (des JLabel)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
31 mai 2005 à 19:09
je voi pas comment tu peu faire si tu ne veu pas lancer un second thread....
le thread de l IHM est forcement bloker si tu t en ser pour une action d attente ...
dc tu lance bien ta demande de connection qd tu affiche ta boite mais il te fau la lancer dans un thread pour que ta boite puisse encor reagir ... faire une annulation par exemple ... ou rafraichir ses composents ;o)

++

GodConan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 09:32
J'ai suivi ton conseil et je passe par un thread.
Ca fait bien ce qu j demande, sauf que ma fenetre d'attente (une Jdialog) ne s'affiche pas correctement. Seul le titre de la fenetre, et le contour de la fenetre apparaissent. Les composants de l'intérieur de ma JDialog n'apparaissent pas, ...

Est ce dû au fait que la fenetre soit modal (qui se bloque elle même?! ou d'ou pourrai provenir l'erreur?)
Merci
0
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 11:15
Bonjour, j'ai trouvé le problème sans réussir à le résoudre (du moins j pense avoir trouvé)

En fait, c'est l'IHM dont le programme est bloquant qui ne se met pas à jour.
En fait dans le thread, les changements sont bien effectués, mais l'ihm n'est pas actualisée.

Comment pouvoir forcer la mis à jour ?????

PS: j'ai tester repaint, mai ca ne fonctio
nne pas
les changements fait dans le thread sont bien pris en compte, puisque, toutes les infos s'affichent à la fin de l'instruction bloquante.

dur, dur la java
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
1 juin 2005 à 19:07
et bien c par ce que c est cette instruction bloquante qu il faut metre ds un autre thread...

autrement je voi as trop ce qui peut y avoir d autre ;-( désolé

GL ++

GodConan
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 juin 2005 à 20:09
ben en fait javai du mal m exprimer .... ;o) c est exactement ce que je t ai proposé.. ;o)

GodConan
0
nels2711 Messages postés 11 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 1 juin 2005
3 juin 2005 à 09:00
oups désolé
0