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 :

Gestion personnelle des evenements


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut Gestion personnelle des evenements
    Bonjour à tous!
    Dans le cadre du developpement d'une JInternalFrame pouvant etre appelée par une simple fonction, je cherche à interrompre la boucle principale de la tache en cours sans pour autant interrompre les evenements de la fenetre...

    Voici le bout de code qui me "permet" de faire ça:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public static int createMessageBox(String title, Icon icone, String message, int buttons)
        {
            DialogBox d = new DialogBox();
            d.text = message.split("\n");
            d.title = title;
            d.icone = icone;
            d.btn = buttons;
            Main.getInstance().setModal(d);
            Main.getInstance().addWindow(d);
            d.initialize();
     
            EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
     
            long lastStringUpdt = System.currentTimeMillis();
            System.out.println(Thread.currentThread());
     
            //Now on boucle:
            while(d.exit == 0)
            {
                try
                {
                    AWTEvent e = eq.getNextEvent();
     
                    if(e.getSource() instanceof Component)
                        ((Component)e.getSource()).dispatchEvent(e);
                     else
                        Main.getInstance().getParent().dispatchEvent(e);
     
                    if(System.currentTimeMillis() - lastStringUpdt > 20)
                    {
                        Main.getInstance().repaint();
                        lastStringUpdt = System.currentTimeMillis();
                    }
     
                    Thread.sleep(1);
                } catch (InterruptedException e)
                { 
                    e.printStackTrace(); 
                }
            }
            d.dispose();
            System.out.println("Test");
            return d.exit;
        }
    Bon, ça marche... pas
    En fait il catch et dispatch bien les evements là ou il faut... Mais une fois sortie de la boucle, bah là c'est le drame: tout reste figé, plus aucun elements n'est catché, et pis encore mon AppletViewer ne veut pas se fermer.
    J'ai donc l'impression que ma gestion des evenements "casse" celle d'AWT/Swing...

    Voilà, merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Bon, j'ai revu mon code, et maintenant ça marche, à l'exception de l'applet viewer qui m'ecrit "Applet jetée" et qui ne se ferme pas!

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    while(d.exit == 0)
            {
                try
                {
                    AWTEvent e = eq.getNextEvent();
                    System.out.println(e.getClass());
     
                    if(e.getSource() instanceof Component)
                    {
                        ((Component)e.getSource()).dispatchEvent(e);
                    }
                    else
                    {
                        if(e instanceof InvocationEvent)
                        {
                            ((InvocationEvent)e).dispatch();
                        } else
                        {
                            Main.getInstance().getParent().dispatchEvent(e);
                        }
                    }
     
                } catch (InterruptedException e)
                { 
                    e.printStackTrace(); 
                }
            }

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut


    Enfin!!!!

    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
    16
    17
    18
    19
    20
    while(d.exit == 0)
            {
                try
                {
                    AWTEvent e = eq.getNextEvent();
     
                    if(e instanceof ActiveEvent)
                    {
                        ((ActiveEvent)e).dispatch();
                    } else
                    {
                        if(e.getSource() instanceof Component)
                            ((Component)e.getSource()).dispatchEvent(e);
                    }
     
                } catch (InterruptedException e)
                { 
                    e.printStackTrace(); 
                }
            }
    ça marche impec!
    Me reste à catcher tout les evenements hors de la frame modal!

Discussions similaires

  1. Gestion personnelle des accès concurrentiels
    Par manumi dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 18/09/2010, 11h56
  2. Gestion centralisée des evenements
    Par CrazySeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/01/2007, 15h15
  3. Réponses: 3
    Dernier message: 26/08/2006, 00h11
  4. Réponses: 11
    Dernier message: 15/02/2006, 15h45
  5. [C#] Gestion des evenements
    Par zebulix13 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/06/2004, 19h40

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