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] Inserer image à une condition

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
29 avril 2013 à 20:57:33

:hello:

Je voudrais afficher une image dans mon application graphique Java mais à une condition.
Je sais afficher une image avec ce code :
http://pastebin.com/65jg5axX

Mais comment faire si je veux afficher l'image à la condition que par exemple n=1 ?
Comme ça ca ne marche pas :
http://pastebin.com/DcTiVsj7

:merci:

dark_drow
dark_drow
Niveau 15
30 avril 2013 à 08:29:55

C'est quoi qui ne marche pas dans ton exemple ?

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 09:07:49

Je sais pas trop, j ai mis un compteur sur mon programme pour connaître la valeur de n a chaque instants, mais quand n dépasse 1 je n ai aucune image qui apparaît :(

_skip
_skip
Niveau 10
30 avril 2013 à 10:00:57

Tu dessines que si fautes == 1, pas trop étonnant qu'avec 2 il n'y ai pas de dessin.

Par ailleurs il faudrait que tu sortes la lecture de l'image sur disque de là. Genre tu la lis une fois, tu la passes dans le constructeur de ton Panel et tu la stockes en mémoire.

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 10:08:31

Oui autant pour moi, je voulais dire que quand fautes==1 il n'y a pas d'images qui apparait.
Je regarde ce que tu m'a dis ensuite

_skip
_skip
Niveau 10
30 avril 2013 à 10:20:51

L'un des problèmes possibles avec les méthodes de dessin c'est que tu ne maîtrises pas toujours à quel moment elles sont appelées. En ce sens, si tu passes une variable à 1, le système va pas forcément savoir que ce changement de variable a un impact sur le dessin.

Un truc qui peut t'aider à valider cette hypothèse, c'est déjà au moment ou n == 1 d'essayer de déplacer ou réduire et restaurer la jFrame afin de forcer le système à redessiner.

Sinon, le truc qui dépanne, insérer dans paintcomponent, juste avant ton drawImage, un system.out.println("fonction de dessin appelée") pour être sûr que ta fonction est bien appelée. Déjà ça pour voir dans quel direction chercher

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 10:22:29

D'accord merci je regarde ça!

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 10:24:49

Effectivement lorsque je réduis la jFrame à n==1 mon dessin apparait, je vais donc essayer ta solution.

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 10:28:36

Pas mieux comme ça :
http://pastebin.com/CiCqTB4N

En tous cas, lorsque je reduis à n==1 mon image apparait bien, il faut chercher par là!

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 11:31:25

Je croyais avoir trouvé mais non, je vois pas comment appelée la fonction

_skip
_skip
Niveau 10
30 avril 2013 à 13:42:02

Tu as essayé de "tracer" avec la console les appels à paintComponent?
Tu devrais remarqué que sitôt que cette méthode est appelée ton dessin apparaît.

Si c'est bien le cas, il faut que tu déclenches manuellement le re-dessin du composant. Par contre je sais pas de tête si tu dois faire cela en appelant repaint, invalidate, ou autre sur le panel.

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 13:57:59

Non, même quand n==1, rien ne s'affiche dans la console, par contre si je redimensionne l'interface, la console affiche :
"BufferedImage@1172e08: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@cf2c80 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 400 height = 400 #numDataElements 3 dataOff[0] = 2"

"BufferedImage@1fee6fc: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@cf2c80 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 400 height = 400 #numDataElements 3 dataOff[0] = 2"

_Aleas_
_Aleas_
Niveau 25
30 avril 2013 à 15:52:15

Sinon, tu peux essayer d'appeler toi-même la méthode paintComponent avec repaint() dans la classe qui utilise ton panneau. Et puis y a toujours getGraphics() au pire...
Aussi, dans ton bloc if, évite de déclarer des variables. Car les instructions de déclaration ne nécessitent d'être exécutées qu'une seule fois. Or, dans un bloc if ou dans une boucle, ces instructions peuvent être exécutées plusieurs fois. Il faudrait donc plutôt déclarer ton objet image avant la condition.

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 19:50:22

Je ne suis pas sure de comprendre à quel endroit je dois placer le repaint().
Sinon voici mon nouveau code en ayant déclarer les variables avant :
http://pastebin.com/q8iWYTbW

Pas plus de succès :(

Je ne connais pas la méthode getGraphics() mais si je trouve pas mais je vais voir ça!

dark_drow
dark_drow
Niveau 15
30 avril 2013 à 19:52:05

je plussoie mon VDD, le mieux c'est de l'initialiser ton image qu'une seule fois car elle est très couteuse - ton programme va ramer pour rien - et de n'appeler que la méthode draw() dans paintComponent()

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 19:54:06

C'est bon ça marche, je sais pas pourquoi :noel:

J'ai juste rajouter :
repaint(); après la déclaration des variables donc :
http://pastebin.com/yNs2sMXf

J'ai écris ça un peu au hasard, coup de chance !

:merci:

dark_drow
dark_drow
Niveau 15
30 avril 2013 à 19:59:19

normalement tu peux appeler la méthode paintComponent() en faisant un repaint() après j'ai pas l'intégralité du code sous les yeux

String[]args
String[]args
Niveau 23
30 avril 2013 à 20:30:03

Maintenant y'a sans doute moyen de factoriser ton code avec un tableau, parce que voilà 70 lignes pour pas faire grand-chose... :noel:

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 20:32:14

Oui certainement mais ça marche c'est le principale :o))

[][[]][[[]]]
[][[]][[[]]]
Niveau 8
30 avril 2013 à 20:38:32

Argh problème :noel:

Le programme marche niquel quand je le lance sous Eclipse mais une fois que je l'exporte en Jar toujours le même problème avec les images qui s'affichent pas :fou:

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