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] Usage de la classe Graphics

Rikkel
Rikkel
Niveau 9
07 mars 2013 à 00:31:17

Bonjour !

Mon prof de projet m'a passé un bout de code que je dois implémenter à mon projet d'écosystème qui fonctionne actuellement sur des matrices de pixel, grâce à la ImageBuffer.

Seulement, je n'arrive pas à comprendre comment elle fonctionne !

Voici son code : http://pastebin.com/d7TGDS9S

Il y a 3 images 32*32 à la base du projet qui se chargent, et cela affiche simplement : https://image.noelshack.com/fichiers/2013/10/1362612606-worldofsprite.jpg
Aléatoirement. Ce que je ne comprends pas, c'est la fonction paint de cette classe, comment est-ce qu'elle est appelée alors que dans le main on fait juste un appel au constructeur, et quel est le Graphic qui doit être en argument de cette fonction ?

Merci d'avance !

Pseudo supprimé
Pseudo supprimé 07 mars 2013 à 02:34:28

Héritage, évènements, tout ça :)

Dans les grandes lignes, vu qu'elle est héritée, la fonction "paint" est connue de la JVM pour cet objet qui sait alors qu'il faut l'appeler lorsqu'un évènement lié à l'affichage survient. L'objet Graphics est tout simplement un contexte fourni à cette fonction (par les fonctions qui vont l'appeler, pas toi directement sauf cas très spécifique) dans lequel les opérations de dessin vont s'effectuer. Contexte lié de façon fort pratique à l'objet qui a hérité de ces fonctions :)

Typiquement, elle sera appelée lors de tout ce qui a pu modifier la fenêtre : resize, passage derrière une autre fenêtre, etc. Son code sera ré-exécuté à chaque fois. J'en profite au passage pour vanter les bienfaits du double buffering.

Tikim
Tikim
Niveau 21
07 mars 2013 à 08:41:52

Tu peux expliquer ce que tu entends par double buffering dans le cas de la classe Graphics stp ?

Rikkel
Rikkel
Niveau 9
07 mars 2013 à 09:29:25

Je vois mais est-ce que le nom de cette fonction paint y est pour quelque chose? Ou bien n'importe quelle fonction prenant en argument un objet Graphic sera appelé?
Et il faut aussi faire du double buffering donc pour animer ce qui est dessiné par la classe graphique?

Rikkel
Rikkel
Niveau 9
07 mars 2013 à 10:43:48

C'est plus clair mais je n'arrive pas a distinguer la difference entre ce que tu expliques et un heritage d'une classe abstraite par un extends puis une redéfinition d'une methode abstraite.

Pseudo supprimé
Pseudo supprimé 07 mars 2013 à 11:43:18

Lorsque tu hérites d'une méthode abstraite, tu es OBLIGE de l'implémenter. Si elle n'est pas abstraite, elle te fournit un comportement par défaut. Dans les deux cas, d'un point de vue de l'appelant, tu sais qu'elle est là. En "redéfinissant" la méthode, tu modifies son comportement et plie son fonctionnement à tes besoins. Dans le cas de ton code, tu "obliges" Swing à tracer tes tiles plutôt que le fond gris qu'il remplis par défaut dans paint (en fait, c'est légèrement différent, mais l'idée est là).

Voilà toutes les méthodes qui vont éventuellement appeler un "paint". Cette méthode ne sort pas du néant : elle est appelée par d'autres. C'est de la délégation : le dessin t'es délégué mais l'affichage "physique" est effectué par ses autres méthodes et leurs appelants :

https://image.noelshack.com/fichiers/2013/10/1362652983-java-ee-legacysrcmaintest-java-eclipse.png

Tu peux voir une interface comme un contrat, une classe abstraite comme un kit et une classe héritée comme un plugin éventuellement personnalisable.

Pseudo supprimé
Pseudo supprimé 07 mars 2013 à 11:45:12

Accessoirement, tu devrais finir par voir toutes ces notions en cours de génie logiciel ou assimilé.

Rikkel
Rikkel
Niveau 9
07 mars 2013 à 18:28:05

Merci Raspberry-Pi :)
Je suis actuellement en L2 Informatique à l'upmc donc je n'ai pas encore fait de cours de génie logiciel

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