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.
@Anto91172 жыл бұрын
très bonne vidéo, merci :)
@lawan83497 жыл бұрын
magnifique!!! bravo continuez à nous faire aimer vos cours , c'est un délice
@marocaintoutelavie6 жыл бұрын
Merci infiniment pour vos explications bien détaillés
@ijjouelmazoud94076 жыл бұрын
Merci sur votre tutoriel ,bon explication
@teleprogresteto21927 жыл бұрын
Vos cours sont pédagogiques. Merci
@houdabenabdallah-j5b11 ай бұрын
merci
@krakowjr85743 жыл бұрын
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 ? ...
@thomasm47553 жыл бұрын
merci beaucoup pour ce tuto, grace a vous j'ai pas eu une bonne note :)
@codewithme82604 жыл бұрын
the best
@ivantad7 жыл бұрын
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-iv1xw7 жыл бұрын
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 !
@DominiqueLiard067 жыл бұрын
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 : kzbin.info/www/bejne/g4bQlKSfgsibi6c Bon courage. Dominique
@FR-iv1xw7 жыл бұрын
Merci dominique !
@melhemhamade42103 жыл бұрын
Merci! Dommage et incompréhensible le nombre peu élevé de vos abonnés.
@surfeurdestemps31937 жыл бұрын
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...)
@DominiqueLiard067 жыл бұрын
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.
@surfeurdestemps31937 жыл бұрын
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
@DominiqueLiard067 жыл бұрын
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.
@sylvaing48666 жыл бұрын
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"); } }