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 :

SwingUtilities.invokeLater : à quoi ça sert ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Par défaut SwingUtilities.invokeLater : à quoi ça sert ?
    Bonjour,

    j'essaie de comprendre comment on fait pour créer une interface graphique en java. J'ai donc décidé de suivre le cours de Baptiste Witch.

    Or voilà le code qu'il propose pour créer une fenetre :

    package dvp.swing.bases.fenetres;

    import javax.swing.JDialog;
    import javax.swing.SwingUtilities;

    public class TestJDialog {
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable(){
    public void run(){
    //On crée une nouvelle instance de notre JWindow
    JDialog window = new JDialog();
    window.setSize(300, 200);//On lui donne une taille pour qu'on puisse la voir
    window.setVisible(true);//On la rend visible
    }
    });
    }
    }
    J'avoue qu'en voyant ça je ne comprend rien. On déclare des méthodes dans des méthodes et on déclare même une méthode dans l'argument d'une autre méthode. Donc j'ai tenté de simplifier ça de façon à ce que je comprenne ce que je fait. Parce que le code qu'il propose fonctionne, mais je ne comprend pas pourquoi et je ne veux pas utiliser un code que je ne comprend pas. J'ai donc réussi à obtenir exactement le même résultat en simplifiant de la manière suivante :

    import javax.swing.JDialog;

    public class Fenetre {

    public static void main(String[] a){

    Fenetre(300, 200);

    }

    public static void Fenetre(int largeur, int hauteur){

    JDialog fenetre = new JDialog();
    fenetre.setSize(largeur, hauteur);
    fenetre.setVisible(true);

    }
    }
    Là, c'est un code que je comprend et qui fait la même chose. Du moins, je pense, mais je m'interoge quand même parce que si l'auteur du tutorial a mis toutes les commandes que j'ai enlevées, il doit y avoir une raison.

    Mes questions sont donc les suivantes :

    1. A quoi sert le SwingUtilities.invokeLater et l'import qui va avec ?
    2. Peut on m'expliquer un peu le fonctionnement du code du tutorial ? Quelle méthode fait quoi ? et pourquoi s'imbriquent elles de cette façon ?
    3. Pourquoi faire si compliqué quand on peut faire simple ?


    Merci.

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    juste avant de te donner les explications que tu souhaites avoir j'espere que tu as deja lu un cours sur les Threads ou les Interfaces,Sinon ça va etre un peu plus difficile a comprendre(quoique rien n'est difficile dans la vie)

    1-
    # A quoi sert le SwingUtilities.invokeLater et l'import qui va avec ?
    -d'abord coup d'oeil ici
    Quand on crée un composant un thread specifique est charger de la gestion des evenements et à partir du moment ou notre composant est visible toutes les modofications affectant ce composant doit etre faite par ce thread et c'est la qu'intervient notre classe SwingUtilities où SwingUtilities.invokeLater utilise le "dispatchEventThread" pour faire ce dont je viens de parler .
    On déclare des méthodes dans des méthodes et on déclare même une méthode dans l'argument d'une autre méthode.
    Quand on implemente une interface on se doit de redefinir des methodes spécifiques associés et Runnable est une interface et dans ce cas il faut redefinir la methode "run",ça veut dire qu'il auraitpu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Runnable run=new Runnable(){
        	   public void run(){------------------------------------}
     };
    SwingUtilities.invokeLater(run);
    2-vu que tu debute les interfaces graphiques
    3-
    Pourquoi faire si compliqué quand on peut faire simple ?
    Certainement pas pour s'amuser (et en meme temps pas si compliqer que ça)
    Tiens voila un exemple :j'ecris un code pour saisir un entier et l'afficher(vite fait)
    ce dont il faut s'attendre c'est si l(utilisateur entrer un caractere ou une chaine de caractere ou un double ) que se passe t'il se cas?c'est juste de la rigueur et du contrôle
    Revenons à notre histoire,on pourait enveler cette partie du code comme tu l'a fait mais dans un gros code tu aurais une erreur du genre
    Exception in thread "AWT-EventQueue-2" ........................
    qui ne risque pas d'arreter le fonctionnement de ton appli
    j'espere que j'ai été quand un peu clair
    @+

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Par défaut
    ok, je vais un peu me renseigner sur les threads car si j'ai bien compris, c'est un pré requis pour comprendre ce que je cherche à comprendre.

    Merci de ta réponse. Je reviendrai surement poser d'autres questions lorsque j'aurai lu le tuto sur les threads.

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

Discussions similaires

  1. [ActionToolBar] A quoi ça sert exactement ?
    Par MiJack dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/02/2006, 10h48
  2. [XSD] A quoi cela sert-il ? Comment l'utiliser ?
    Par s3r3nity dans le forum Valider
    Réponses: 1
    Dernier message: 18/12/2005, 00h05
  3. SPI_GETPOWEROFFACTIVE à quoi ca sert??
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/11/2005, 13h51
  4. [Collections] L'interface "Iterator" à quoi ça sert
    Par Samanta dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 07/04/2005, 17h51
  5. [VB6] [TWIPS] A quoi ça sert ?!
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 18/09/2003, 09h04

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