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 :

[Java][Event - Listener] Return en fonction d'un listener


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut [Java][Event - Listener] Return en fonction d'un listener
    Bonjour,

    j'ai concu une popup dialog particulière.

    Elle est appelée par une methode ayant cette signature :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public int showMessageBox(String message);
    en gros cette methode affiche un JPanel en 1er plan de ma fenetre, donc ce qu'il y a dessous est inaccessible logiquement.

    Pour faire encapsuler, je voudrais que l'utilisateur de cette méthode n'est pas d'evenement a lier sur le JPanel afficher.

    En gros, l'appel de cette méthode afficherait le panel, et attendrait un clic (sur l'un des boutons present sur ce panel, "YES", "NO", etc...) et une fois que le clic a lieu renverrait la valeur associé a ce clic. en gros la méthode serait bloquante tant qu'on a pas cliqué.

    Pour ceux qui connaissent c#, ca ressemble, bizarrement , aux MessageBox.show de c#

    donc voila...j'ai pas l'idée pour le faire, alors que ca doit pas etre bien compliqué...

    merci d'avance

  2. #2
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Pourquoi n'utilises tu pas la classe JOptionPane? Elle fait exactement ce que tu veux.

    A+
    Hydraland

  3. #3
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par hydraland Voir le message
    Salut,

    Pourquoi n'utilises tu pas la classe JOptionPane? Elle fait exactement ce que tu veux.

    A+
    Hydraland
    euh...parce que c'est moche....je connais OptionPane...mais je veux ma propre "boite de dialogue" qui en fait n'est pas / plus une popup... you know

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Tu veux ça sous la forme d'une boite de dialogue (ie: une nouvelle petite fenêtre) qui s'ouvre devant l'autre ?

    -> Dans ce cas utilise un JDialog modal

    Tu veux ça comme un panel masquant (ou grisant) la fenêtre de ton application

    -> Dans ce cas le mieux est d'utiliser un GlassPane (tu as une super démo de Gfx sur dvp)

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Tu veux ça sous la forme d'une boite de dialogue (ie: une nouvelle petite fenêtre) qui s'ouvre devant l'autre ?

    -> Dans ce cas utilise un JDialog modal

    Tu veux ça comme un panel masquant (ou grisant) la fenêtre de ton application

    -> Dans ce cas le mieux est d'utiliser un GlassPane (tu as une super démo de Gfx sur dvp)

    Bulbo
    le panel est deja fait...et j'utilise le GlassPane ca ca marche...c'est meme bluffant comment ca rend bien...

    mais je veux juste que ma méthode renvoie qq chose au clic sur un bouton...

    je veux pas avoir a créer le panel, l'afficher puis m'abonner a un evenement et attendre l'evenement...

    je veux juste que ces etapes soient encapsulées, comme le JOptionPane

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par Piolet Voir le message
    le panel est deja fait...et j'utilise le GlassPane ca ca marche...c'est meme bluffant comment ca rend bien...

    mais je veux juste que ma méthode renvoie qq chose au clic sur un bouton...

    je veux pas avoir a créer le panel, l'afficher puis m'abonner a un evenement et attendre l'evenement...

    je veux juste que ces etapes soient encapsulées, comme le JOptionPane
    Dans ce cas il va falloir faire un peu de synchro entre threads..

    Il faut que ta méthode soit bloquante mais attention si tu es déjà sur l'EDT (le thread de swing) tu figes ta GUI.

    Dans un cas similaire ce que j'ai fait c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public int showMessageBox(String message)
    {
      SwingUtilities.invokeLater(.....);
     
      synchronized(this)
      {
        try
        {
          this.wait();
        }
        catch (Exception e) {}
       }
     
      // ici tu récupères la valeur du bouton pressé et tu la retournes ..
    }
    Et dans l'action listener du bouton qui doit virer ton panel tu fais un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    synchronized(myMainClass.this)
    {
      notifyAll();
    }
    Si tu es déjà sur l'EDT (dans l'action listener d'un bouton par exemple) passe par un nouveau thread pour appeler showMessageBox.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent Java d'une signature de fonction C++
    Par rimas2009 dans le forum Langage
    Réponses: 12
    Dernier message: 24/04/2009, 12h42
  2. [POO] objet Java en paramètre d'une fonction Javascript
    Par bastouffe dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/09/2008, 16h55
  3. [Yahoo UI] Return sur fonction (yui)
    Par vraipolite dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 18/04/2007, 17h21
  4. Réponses: 4
    Dernier message: 25/07/2006, 11h10
  5. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13

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