CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[java] Ecouter evt d'une autre cla

pauleta3
pauleta3
Niveau 10
18 mars 2012 à 12:19:40

Bonjour,

J'ai pas un petit soucis, et j'aurais besoin d'un coup de main :)

Alors le principe, j'ai 3 classes.

Une classe A, et une classe B avec une IHM.
La classe A, instancie un objet de B.
Et j'aimerai, que lorsque l'utilisateur clique sur un bouton de l'objet b, l'évènement soit capté par A.

Auriez vous une idée?

(Le but c'est de ne rien faire sur B (ou ajouter des interfaces quoi)

Merci :)

Silvermo
Silvermo
Niveau 26
18 mars 2012 à 13:16:21

Je vois deux solutions :

Première :
Tu crées tes propres Listener, Event etc. Dans ce cas A devra implémenter le Listener, B devra posséder en interne une liste de listeners à prévenir quand tu cliques sur le bouton dans l'IHM.
Et dans A, après avoir créé une instance de B, tu pourras faire quelque chose comme :
b.addListener(this)

Autre solution, si ton object B est déjà de type IHM, il doit déjà être possible d'écouter ses évènements sans modifier son code. Mais je doute que ce soit ton cas.

Il y a aussi des trucs un peu moins beaux, voir du côté des PropertyChangeListener, mais je déconseille.

tbop2
tbop2
Niveau 10
18 mars 2012 à 13:20:41

C'est quoi le truc moche des PropertyChangeListener par rapport à un simple Listener ? C'est juste une question de curiosité je n'ai jamais entendu parler de cette classe auparavant :)

pauleta3
pauleta3
Niveau 10
18 mars 2012 à 13:31:24

Merci!

Mais en fait ca m'allait pas!

En gros (j'avais dej 4 softs, qui utilisait une ihm "connexion".

La fenetre était la même sauf une ou deux méthodes (car la bdd tout ca n'étais pas la même)

En gros j'ai voulu tout remettre d'équerre, c'est a dire, ne mettre QUE l'ihm sur connexion.

Et du coup, lprsque l'on clique sur le bouton connexion, faire mon traitement dans ma classe qui instancie la connexion.

J'ai finalement réussi grace aux "observer".

Pour infos,

j'ai créé 2 interfaces "observeur" et "observable".

Mon IHM implemente observable.
Et ma classe A à une sorte "d'actionListener" sur "observable"

Je sais pas si j'ai été clair!

Mais en tout cas, merci :)

Silvermo
Silvermo
Niveau 26
18 mars 2012 à 13:51:00

Observer, Listener, c'est pareil :) , c'est donc assez proche de ma solution, par contre dur de comprendre de quoi tu parles :p ... y a que toi qui comprends ton post je crois ^^ , car tu n'as pas expliqué tout.

tbop2 : c'est une façon moins propre et moins maintenable de faire les choses, c'est pour simplifier la vie du développeur, mais c'est tout sauf un best practice. Cela évite au développer de définir ses listeners, ses events. Et je trouve ça limite moins maintenable.
En gros tu rajoutes un listener en passant comme paramètre, dans une chaine de caractère, le nom de la propriété que tu veux surveiller. Si le nom de cette propriété change, ton code ne fonctionne plus... en plus tu n'as plus tout à fait le contrôle de qui peut être écouté, et qui peut écouter, car tu ne définis plus toi mêmes les interfaces... bof bof quoi.

Doc :
http://docs.oracle.com/javase/1.4.2/docs/api/java/beans/PropertyChangeListener.html

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment