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

AWT/Swing Java Discussion :

Bloquer les évenements d'ailleurs ?


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 109
    Points
    109
    Par défaut Bloquer les évenements d'ailleurs ?
    Bonjour tout le monde,

    Mon problème n'es tpas simple à expliquer, mais je m'y tente tout de même:

    J'ai une fenetre principale qui contient tout pleine de truc. Dans cette même fenetre, je crée une popup (JPanel) pour demander un choix à l'utilisateur avec deux boutons ( ok et annuler).

    j'aimerais savoir s'il est possible de bloquer les évenements qui se produisent ailleur, par exemple, si des boutons sont dispo ailleurs dans l'interface, j'aimerais qu'il soit impossible de cliquer dessus.

    J'aimerais que ce ne soit pas un truc du genre désactiver tous les boutons, mais bien un truc qui aspire les évenements et qui ne traite que ceux qui m'interessent pour la popup.

    L'idéal serait de pouvoir attendre une valeur de retour de ma popup (ok ou annuler). Un peu comme le fait un JFileChooser, mais là je n'ai rien compris aux sources...

    Merci d'avance 8)

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,
    Il faut utiliser une JDialog, en lui précisant d'être modale. Elle va désactiver la JFrame ou JDialog en dessous, et empêcher l'utilisateur de l'utiliser.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    En même temps, si c'est juste pour créer une boîte de dialogue avec Ok et Annuler tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int laRéponse=JOptionPane.showConfirmDialog(taJFrameParente, "Le message à afficher", "Confirmation", OK_CANCEL_OPTION );
    Ca te crée une boîte de dialogue modale (donc qui bloque tout le reste) affichant le message que tu veux et avec les bouton Ok et Annuler.
    Et en plus ça te renvoie ce que l'utilisateur à choisie.

    Pour tester la réponse tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (laReponse==JoptionPane.OK_OPTION){
    //clic sur Ok
     
    }else{
    //Clic sur Annuler
     
    }

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  4. #4
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    Bonjour a tous,

    La lecture de ce post m'a fait tester la methode setModal(), mais je ne comprend pas comment on peux obliger la JDialog a rester "en avant".
    (Comme par exemple dans les options d'un browser où l'on est obligé de clore la fenetre avant de pouvoir le réutiliser).

    Je sais pas si j'ai été clair
    Science sans conscience n'est que ruine de l'âme

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 109
    Points
    109
    Par défaut
    Merci... mais ce n'est pas vraiment la réponse que j'attendais...

    En effet, le JDialog pourrait convenir à cette situation, mais j'ai également des tas dd'autres applications autres que des boites de dialogues où je devrais pouvoir freezer le reste de mon appli hormis un petit bout...

    J'attendais plus un conseil du coté des Threads et eventqueues par exemple.

    Si quelqu'un a une solution ... merci

  6. #6
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Je ne vois pas trop ce qu'est censé donner le résultat, mais sinon, je ne vois que des setEnabled(false) massifs et récursifs.

    A ma connaissance, le Thread graphique ne dispose que d'une seule file d'évènements, et ne permet pas de trier certains évènements pour ne pas les traiter ou les traiter plus tard.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    bonjour,
    j'ai un problème qui ressemble à celui là, en effet, j'ai une JFrame principale, ensuite je lance un jdialog, et je veux qu'aucun événement ne se fasse avant que j'appuie sur le bouton ok!
    ce qu'il fait pour le moment : il affiche le jdialog et continue le traitement derrière...

    pouvez vous m'aider s'il vous plait?

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    éventuellement en bidouillant sur le glasspane, référe toi à l'infinite progress demo de Romain Guy dispo sur dvp ou son blog
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Tu as essayé de threader une JDialog ??

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/10/2005, 21h14
  2. Afficher un message sans bloquer les autres traitements??
    Par Ben_Le_Cool dans le forum Langage
    Réponses: 7
    Dernier message: 13/10/2005, 00h21
  3. Réponses: 1
    Dernier message: 22/09/2005, 20h46
  4. bloquer les zones de textes en écriture
    Par seb59dk dans le forum IHM
    Réponses: 10
    Dernier message: 09/09/2005, 10h15
  5. Bloquer les accès à certains sites
    Par Polskynet dans le forum Administration
    Réponses: 2
    Dernier message: 25/02/2005, 09h49

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