TUTO Java : Implémentations d'interfaces

Поділитися
Вставка
  • Опубліковано 3 гру 2024

КОМЕНТАРІ • 20

  • @guillaumegras868
    @guillaumegras868 4 роки тому

    Des tutos super clair que je découvre aujourd'hui en cherchant les avantages et inconvénients sur une interface par rapport à une classe abstraite ... et réciproquement.

  • @Anto9117
    @Anto9117 2 роки тому +1

    très bonne vidéo, merci :)

  • @lawan8349
    @lawan8349 7 років тому +1

    magnifique!!! bravo continuez à nous faire aimer vos cours , c'est un délice

  • @marocaintoutelavie
    @marocaintoutelavie 6 років тому +1

    Merci infiniment pour vos explications bien détaillés

  • @teleprogresteto2192
    @teleprogresteto2192 7 років тому +1

    Vos cours sont pédagogiques. Merci

  • @ijjouelmazoud9407
    @ijjouelmazoud9407 6 років тому +1

    Merci sur votre tutoriel ,bon explication

  • @houdabenabdallah-j5b
    @houdabenabdallah-j5b 11 місяців тому +1

    merci

  • @thomasm4755
    @thomasm4755 3 роки тому +1

    merci beaucoup pour ce tuto, grace a vous j'ai pas eu une bonne note :)

  • @melhemhamade4210
    @melhemhamade4210 3 роки тому +1

    Merci! Dommage et incompréhensible le nombre peu élevé de vos abonnés.

  • @krakowjr8574
    @krakowjr8574 3 роки тому

    Bonjour, merci pour ce tuto :)
    Dans un GUI, quand on a plusieurs objets types différents qui ont besoin de listeners (combo box, spinner, boutons...) c est quelle(s) façon(s) d implémenter ces listeners qui serait la plus adaptée ? Inner class ? une classe normale ? ...

  • @codewithme8260
    @codewithme8260 4 роки тому

    the best

  • @ivantad
    @ivantad 7 років тому

    Merci Dominique pour ces super tutos !
    J'ai cependant un souci avec l'exemple2 que je ne parviens pas à résoudre:
    Dans la classe BtnClickMeListener(), j'ai bien déclaré :
    JFrame frame = (JFrame) btn.getTopLevelAncestor();
    le ... frame.setTitle(btn.getText()); ... fonctionne bien, par contre,
    je n'ai pas accès à ... frame.btnActivateMe malgré l'avoir rendu public dans Example2.java
    frame.btnActivateMe.setText("hello"); => btnActivateMe cannot be resolved or is not a field
    Aurais-tu une idée ?

  • @FR-iv1xw
    @FR-iv1xw 7 років тому

    Bonjour. Malheureusement je bloque dès le début de la vidéo. En effet, je ne comprends pas à quoi correspond le this à la ligne de code suivante :" this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);". Puis bien évidemment dans les autres cas ou this est utilisé :"this.setSize(600,400);" etc. Enfin dans le cas ou this est utilisé dans la ligne de code suivante :
    btnClickMe.add(this). Ces this font-il référence un objet instancié par la classe exemple ? suis-je totalement à l'ouest ? ;)
    Par ailleurs, lorsque l'on fait "contentPane.setLayout(new FlowLayout)" cela revient il à : "contentPane.setLayout(FlowLayout flow=new FlowLayout)". En cherchant un peu j'ai pu comprendre que cela revenait grosso modo au même ? est-ce le cas ?
    J'en conviens cela fait énormément de questions :/ ... Mais je te suis très reconnaissant pour le boulot que tu fournis. Grace à toi je me réconcilie avec la POO et espère (dans 100 ans) arriver à ton niveau. Merci encore !

    • @DominiqueLiard06
      @DominiqueLiard06  7 років тому +1

      Bonjour. En fait c'est simple. Dans une méthode, this représente l'objet (l'instance) sur lequel la méthode est invoquée. A fortiori, dans un constructeur, this représente l'objet en cours d'initialisation. Donc ici, this représente la fenêtre en cours de construction/initialisation. En fait, ce this n'est pas forcément obligatoire (à défaut c'est this qui est considéré), mais perso, j'aime bien rappeler sur quel objet de travail. Petit conseil, regarde de nouveau ce tuto qui doit en parler : ua-cam.com/video/MUmcqiMchUE/v-deo.html
      Bon courage.
      Dominique

    • @FR-iv1xw
      @FR-iv1xw 7 років тому

      Merci dominique !

  • @sylvaing4866
    @sylvaing4866 6 років тому

    J'ai pensé à une autre solution: celle d'un listerner dans une classe externe avec un constructeur qui prend en parametre la classe qui appelle:
    Dans la classe MyJframeCaller qui porte le button on fait
    btnClickMe.addActionListener(new BtnClickMeListenerWithCaller(this));
    public class BtnClickMeListenerWithCaller implements ActionListener {
    private MyJframeCaller caller = null;
    public BtnClickMeListenerWithCaller(MyJframeCaller caller) {
    this.caller = caller;
    }
    @Override
    public void actionPerformed(ActionEvent arg0) {
    caller.setTitle("Mon title");
    }
    }

  • @surfeurdestemps3193
    @surfeurdestemps3193 7 років тому

    Bonjour, en faisant un petit déboguage dans la méthode actionPerformed et en regardant l'ensemble des valeurs liés aux évenements (et il y a en beaucoup [surtout dans event.source?] lol), je me suis aperçu qu'il existe une méthode "getActionCommand( )" et cette méthode retourne justement un string, je ne connais pas la finalité de cette méthode par rapport à la méthode getText().
    Cette méthode getActionCommand( ) retourne le texte du bouton cliqué. Du coup le switch devient possible
    switch(event.getActionCommand()) {
    case "Bouton 1":
    System.out.println("Bouton 1 cliqué");
    break;
    case "Bouton 2":
    System.out.println("Bouton 2 cliqué");
    break;
    case "Bouton 3":
    System.out.println("Bouton 3 cliqué");
    break;
    default:
    throw new IllegalArgumentException("Aucun bouton cliqué: " + event);
    }]
    j'ai mis un default mais je suis me suis inspiré de la javadoc API sur switch et string car je ne savais pas quoi mettre...je pense que le default n'aura jamais lieu en faite car cliquer en dehors du bouton ne gere pas cet event(en tout cas pour l'instant...)

    • @DominiqueLiard06
      @DominiqueLiard06  7 років тому

      Bonjour. Un petit conseil, évite getActionCommand et getText : c'est deux méthodes renvoient des chaînes de caractères et comparer des string n'est pas très performant. Sur d'autre type d'événements (MouseEvent) ce serait très pénalisant. Préfère utiliser event.getSource() qui renvoit un pointeur sur l'éméteur de l'événement. Comparer des pointeur c'est plus éfficace.

    • @surfeurdestemps3193
      @surfeurdestemps3193 7 років тому

      Ah ok merci. Je t'avouerai que la gestion des pointeurs n'a jamais été mon fort que je faisais un peu de C. Là je comprend mieux, event.getSource() renvoit une référence vers l'objet émetteur(un hashcode). Pourtant ton idée de départ avec le switch nous aurait bien facilité la tâche. surtout que dans mes "case" du switch j'avais aussi rajouter this.setTitle("Bouton x");
      De plus , en tentant de genérer un 4eme bouton avec WindowBuilder, il est vrai que la génération de code automatique ressemble à "btnBouton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
      System.out.println("Bouton 4 cliqué");
      }
      });"
      Et donc comme tu l'avais dit, avec une classe anonyme (je ne connaissais pas cette notion).Ce serait donc la meilleur optimisation possible.
      En faite, je m'interroge sur l'organisation de code, je pense par exemple à l'idée de départ qui consiterait à organiser son projet en mettant l'ensemble des écouteurs dans un package, un package pour les containers et les components puis d'instancier de extérieures en utilisant les interfaces(non GUI)...faire un mixte avec les classes anonymes

    • @DominiqueLiard06
      @DominiqueLiard06  7 років тому

      Peut-être devrais tu aussi suivre ce tuto : www.youtube.com/watch?o=U&video_id=DjHC-C-GXUc
      Il compléte les techniques pouvant permettre de coder un gestionnaire d'événements. Peut-être que ce complément te sera utile dans ta réflexion.