IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Problème d'affichage des images avec JLabel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut Problème d'affichage des images avec JLabel
    bonjour, voilà je réalise un petit jeu en Graphics sur Java et ...j'ai un problème T.T... bref voilà le problème:
    en variables publiques je définit l et l2.
    ensuite je déclare dans ma frame que l vaut une image,l2 aussi mais que pour l'instant n'en ayant pas besoin je la cache.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    l=new JLabel(new ImageIcon("perso1.GIF"));
    	l2=new JLabel( new ImageIcon("bouledefeu.gif") );
    	l.setBounds(x, y, 24,50);
     
     
    	l2.setVisible(false);
    	add(l2);
    	add(l);
    j'ai un KeyListener qui me permet de bouger mon personnage sur les quatres directions... en fonction de la direction une variable sens prend 4 valeurs différentes . à l'appui de la touche du clavier numérique "2" normalement une boule de feu devrait apparaitre donc l2 en fonction de x,y.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    if (arg0.getKeyCode() == 98){
    			ImagePerso ip=new ImagePerso();
    			int w=x+6;
    			int z=y+12;
    			l2=ip.draw("bouledefeu.gif");
    			l2.setIcon( new ImageIcon("bouledefeu.gif") );
    			l2.setBounds(w, z, 24,50);
    			l2.setVisible(true);
     
    			l2.repaint();
    			add(l2);
    		/*	while((0<w)||(w>300)||(0<z)||(z>300)){
    				if(sens==1)w-=2;
    				if(sens==2)z-=2;                  ici le programme qui devrait la faire bouger ... mais il faut déjà pouvoir l'afficher...
    				if(sens==3)w+=2;
    				if(sens==4)z+=2;
    				l2.setBounds(w, z, 24,50);
    				l2.repaint();
    				add(l2);
    			}*/
     
    		}
    et c'est ICI que ça se complique ... preuve en Images...

    bon là le 98 dans la console signifie que j'ai bien appuyé sur "2"... la boule de feu n’apparaît pas...


    mais lorsque je bouge mon personnage hop! elle apparaît et au dessus comme voulu! le problème c'est que j'ai pas envie forcément de bouger le personnage pour qu'elle puisse bouger... et comme je débute en Java je n'ai vraiment aucune idée de ce qui se passe ...j'éspère que vous pourrez me dire ce qui ne marche pas,Merci d'avance .

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    L'utilisation de JLabel pour ce genre de chose est une mauvaise idée.
    Tu devrais utiliser un BufferedImage par exemple pour dessiner ce que tu souhaites, puis faire un simple repaint qui appellera la surcharge de paintComponent et affichera tout simplement le BufferedImage.
    Mais pour le cas présent, tu devrais tester un revalidate sur ton JPanel car il doit recalculer l'emplacement de tous ses composants, même si tu n'as pas spécifié de layout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut
    bonjour et merci pour ta réponse(désolé pour le temps de réponse long je croyais que mon adresse mail me préviendrait d'une réponse^^" )euh revalidate ? ça permet de redessiner entièrement le panel ? je suis désolé je ne connais pas du tout cette méthode :S tu pourrais m'expliquer comment on utilise ?
    bon j'ai essayé d'utiliser les BufferedImage....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BufferedImage bufImage ;
    bufImage= ImageIO.read(new File("bouledefeu.gif"));
    //puis dans la méthode KeyListener
    getGraphics().drawImage(bufImage, w, z, null);
    			repaint();
    //j'ai retiré le while pour l'instant de manière à faire juste un affichage simple
    et ça marche ! .... une fraction de seconde-_-... en fait quand j'appuie sur la touche elle apparaît mais disparaît aussitôt....saurait-tu d'où vient le problème?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par maxbond Voir le message
    et ça marche ! .... une fraction de seconde-_-... en fait quand j'appuie sur la touche elle apparaît mais disparaît aussitôt....saurait-tu d'où vient le problème?
    Le principe : le BufferedImage est une données membre de la classe surchargeant le JPanel.
    Tu dois surcharger la méthode paintComponent dans laquelle tu appelles la méthode parent puis tu affiches l'image.
    Ailleurs dans ton code, la BufferedImage est modifiée. Lorsque tu souhaites afficher la modification, tu appelles la méthode repaint() sur la classe surchargeant le JPanel.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Pour ton jeu une petite idée regarde les Threads , c'est un peu plus avancé en java mais si tu peux les utiliser, tu verras c'est marrent . Tu peux stopper ta boule avec un timer, la faire bouger partout sans que sa impact le reste de ton image, l’arrêter par une touche.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut
    @dinobogan , je pense que j'ai pas vraiment compris ce que tu veux dire mais bon j'ai refais mon programme en écrivant avec bien sur pan mon panel , j'ai rajouté un sleep() pour voir l'animation ... donc maintenant je vois la boule de feu se déplacer pas de problème sauf un ... la boule de feu laisse une horrible traînée derrière elle...
    @XxArchangexX ,oui les threads.... d'abord j'aimerais corriger ma méthode avant d'essayer d'autres choses... mais merci j’essaierais

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2009, 21h35
  2. Problème d'affichage des images sous apache/php
    Par kikoo_of_dijon dans le forum Apache
    Réponses: 9
    Dernier message: 03/11/2007, 16h24
  3. Problème d'affichage des graphes avec Tomcat
    Par _Janu_ dans le forum BIRT
    Réponses: 11
    Dernier message: 20/09/2006, 15h30
  4. [XML/CSS/XSL] Problème d'affichage des images "dynamiqu
    Par popol55 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 06/04/2006, 16h24
  5. problème d'affichage d'image avec mozilla
    Par lyon31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/03/2006, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo