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

Multimédia Java Discussion :

Chargement d'image dans un matrice


Sujet :

Multimédia Java

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut Chargement d'image dans un matrice
    Bonjours,

    Avec le bout de code ci-desous, j'aimerais savoir:

    1. Si le constructeur de ma classe Case() charge une image, est ce que cette derniére sera mise dans ma matrice( grille[][] )?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for(int i=0; i<longueur; i++)
    {
        for(int j=0; j<lareur;j++)
        {
             grille[i][j]=new Case();
        }
    }

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Dans ta matrice, tu auras une Case. Autrement dit, une référence à une Case...
    Si ta Case "contient" (référence) une image, tu pourras y accéder par un accesseur...

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    Excuse moi, mais je n'ai pas bien compris ce que tu m'a expliqué. Peux tu reprendre dans les détailles stp

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Salut,
    A mon avis, il suffit de mettre une methode public du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public ImageIcon recupImage() {
    return new ImageIcon(ton image sous la forme d'un ImageIcon dans ce cas);
    }
    ou bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Image recupImage() {
    return tonImage; // une instance de l'objet Image
    }
    Imaginons maintenant que grille[0][0] contienne une instance de Case, il suffit de faire ((Case)grille[0][0]).recupImage();
    Cela suppose, et ce doit normalement être le cas que grille[][] est un Object[][]. Un tableau de tableau d'objet. Il faut donc caster, c'est l'interret d'écrire (Case)grille[0][0] car grille[0][0] renvoie un Object, et non pas un Case, il faut caster l'objet en Case pour que ce soit ton Case. Du coup, la methode recupImage() existe et renvoie l'objet comme définit plus haut.

    Je crois que c'est ce que voulait dire de manière très condensée la réponse précédente.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Oublie....
    J'ai oublié de préciser que la methode recupImage() doit être écrite dans la classe Case bien sur...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  6. #6
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    En effet, mon tableau est en faite un tableau de case. J'ai fiat le déclaration suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected Case[][] grille;
    Merci pour ta réponse, je vais l'appliquer et je te tiens au courant

  7. #7
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    J'ai implémenté ce sue tu m'as montré et, il me dit que je n'ai pas d'image dans ma case.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void creergrille(String s, int x, int y)
    	{
    		image=s;
     
    		grille[x][y]=new Case(image);
     
    		afficher(x,y);
    	}
    Pour savoir si grille[x][y] contient ma référence a mon image, j'appelle afficher()

    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
     
    public void afficher(int _x, int _y)
    	{
    				try
    				{
    					if(grille[_x][_y].getImage()==null);
    					{
    						System.out.println("Il n'y a pas d'image");
    					}
    				}
    				catch(Exception e)
    				{
    					grille[_x][_y].getImage();
    				}
    	}
    Je lui ai demandé de m'afficher seulement l'endroit que j'ai cliqué (par rapidité).

    Il m'affiche:"Il n'y a pas d'image".

    Pourquoi il me dit sa? Auriez vous une petite idée, svp

  8. #8
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    Ok, mon probléme c résolu.
    j'ai écrit un fonction getImage et setImage qui, quand je fais grille[x][y].getImage() me renvoi l'image chargé dans ma case (Je rappel que grille[N][N] est un tableau de case).

    Par contre, je voudrais dessiner l'image que j'ai chargé dans la case sur lequel j'ai cliké et pour sa, je fais grille[x][y].paint(g,x,y) qui est en faitela fonction paint de case. Le probléme est que "g" est null.

    Comment faire pour qu'il sache que g est en faite l'image que j'ai chargé?

  9. #9
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    Essaie encore de rappeler getGraphics() depuis l'image que tu as stockée.
    c.f. la doc.

  10. #10
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    Je ne comprend pas grand choze.

    Voici les deux code en question:

    grille.java

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    import java.awt.Canvas;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
     
    import javax.swing.*;
     
     
    public class grille extends JPanel
    {
    	String image;
    	Image i,img;
    	JPanel panel;
    	dessin d;
     
    	protected Case[][] grille;
     
    	public static final int largeur=50;
    	public static final int longueur=50;
     
    	//private static final Color couleurDesLignes = Color.white;
     
    	public static final int largeurCaseGraphique= 20;
     
    	public grille()
    	{
    		panel=new JPanel();
     
    		grille=new Case[longueur][largeur];
    		setSize(longueur * largeurCaseGraphique, largeur * largeurCaseGraphique);
     
    	}
     
    	public void init()
    	{
    		for(int i=0; i<longueur; i++)
    		{
    			for(int j=0; j<largeur; j++)
    			{
    				grille[i][j]=null;
    			}
    		}
    	}
     
     
    	public void creergrille(String s, int x, int y)
    	{
    		image=s;
     
     
    		System.out.println("image:" + " " + image);
     
    		grille[x][y]=new Case(image);
    		panel.add(grille[x][y]);
     
    		afficher(x,y);
    		paint(gr, x, y);
    	}
     
    	public void afficher(int _x, int _y)
    	{
     
    		//= (grille[_x][_y].getImage()).getGraphics();
     
    		System.out.println("grille" + "[" + _x + "]" + "[" + _y + "]" + " = " + grille[_x][_y].getImage());
     
    	}
     
    	public void paint(Graphics gr, int i, int j)
    	{
    		if(grille[i][j].getImage()!=null)
    		{
    			grille[i][j].paint(gr, i, j);
    		}
    	}
    }
    case.java

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    public class Case extends Canvas
    {
    	Image i,im, img;
    	String imageItem;
    	dessin d;
     
    	public static int TailleImage;
     
    	protected boolean franchissable;
    	protected boolean visible;
     
    	protected String image;
    	protected String combinaison;
     
     
    	public Case(String imageCase)
    	{
    		imageItem=imageCase;
     
    		franchissable=true;
    		visible=true;
     
    		Toolkit tk = Toolkit.getDefaultToolkit();
    		i = tk.getImage(imageItem+ ".jpg");
     
    		this.setPreferredSize(new Dimension(20,20));	
    		//TailleImage=i.getHeight(this);	
     
    		//System.out.println("gr=" + " " + gr);
    		this.setImage(i);
     
    	}
     
    	//Récup l'image et lui donne une nouvelle valeur
     
    	public Image getImage()
    	{
    		return this.img;
    	}
     
    	public void setImage(Image img)
    	{
    		if(this.img!=i)
    		{
    			this.img=i;
    		}
    	}
     
    	//Permet de savoir si une case est franchissable
     
    	public boolean isFranchissable()
    	{
    		return this.franchissable;
    	}
     
    	public void setFranchissable( boolean value)
    	{
    		if (this.franchissable!=value)
    		{
    			franchissable=value;
    		}
    	}
     
    	// Permet de savoir si une case est visible
     
    	public boolean isVisible()
    	{
    		return this.visible;
    	}
     
    	public void setVisible(boolean value)
    	{
    		if(this.visible!=value)
    		{
    			visible=value;
    		}
    	}
     
    	//Récup et donne une nouvelle combinaison à la case
     
    	public String getCombinaison()
    	{
    		return combinaison;
    	}
     
    	public void setCombinaison(String value)
    	{
    		if(this.combinaison!=value)
    		{
    			combinaison=value;
    		}
    	}
     
    	public void afficher(String ImageItem, int _x, int _y)
    	{
    		if(this.visible==true)
    		{
    			Toolkit tk = Toolkit.getDefaultToolkit();
    			i = tk.getImage(imageItem+ ".jpg");
    			repaint();
     
    			System.out.println("i=" + " " + i);
    		}
    	}
     
     
     
    	public void paint(Graphics gr, int _xx, int _yy)
    	{	
    		System.out.println("Appel Paint1");
     
    			if(this.visible==true)
    			{
    				System.out.println("Appel Paint2");
    				if(i!=null)
    				{
    					System.out.println("xx=" + " " + _xx);
    					System.out.println("yy=" + " " + _yy);
    					System.out.println("g=" + " " + gr);
     
    					gr.drawImage(i, _xx, _yy, this);
    					System.out.println("Appel Paint3");
    				}
    				else
    				{ 
    					System.out.println("PAS DE DESSIN");
    				}
    			}
    	}
    }
    Le truc c qu'i agit comme si je n'avait aucun chargement d'image, sa me prend la tête. Auriez vou un Id?

  11. #11
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    Dsl, j'ai effacé une balise


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    import java.awt.Canvas;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
     
    import javax.swing.*;
     
     
    public class grille extends JPanel
    {
    	String image;
    	Image i,img;
    	JPanel panel;
    	dessin d;
     
    	protected Case[][] grille;
     
    	public static final int largeur=50;
    	public static final int longueur=50;
     
    	//private static final Color couleurDesLignes = Color.white;
     
    	public static final int largeurCaseGraphique= 20;
     
    	public grille()
    	{
    		panel=new JPanel();
     
    		grille=new Case[longueur][largeur];
    		setSize(longueur * largeurCaseGraphique, largeur * largeurCaseGraphique);
     
    	}
     
    	public void init()
    	{
    		for(int i=0; i<longueur; i++)
    		{
    			for(int j=0; j<largeur; j++)
    			{
    				grille[i][j]=null;
    			}
    		}
    	}
     
     
    	public void creergrille(String s, int x, int y)
    	{
    		image=s;
     
     
    		System.out.println("image:" + " " + image);
     
    		grille[x][y]=new Case(image);
    		panel.add(grille[x][y]);
     
    		afficher(x,y);
    		paint(gr, x, y);
    	}
     
    	public void afficher(int _x, int _y)
    	{
     
    		//= (grille[_x][_y].getImage()).getGraphics();
     
    		System.out.println("grille" + "[" + _x + "]" + "[" + _y + "]" + " = " + grille[_x][_y].getImage());
     
    	}
     
    	public void paint(Graphics gr, int i, int j)
    	{
    		if(grille[i][j].getImage()!=null)
    		{
    			grille[i][j].paint(gr, i, j);
    		}
    	}
    }
    case.java
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    public class Case extends Canvas
    {
    	Image i,im, img;
    	String imageItem;
    	dessin d;
     
    	public static int TailleImage;
     
    	protected boolean franchissable;
    	protected boolean visible;
     
    	protected String image;
    	protected String combinaison;
     
     
    	public Case(String imageCase)
    	{
    		imageItem=imageCase;
     
    		franchissable=true;
    		visible=true;
     
    		Toolkit tk = Toolkit.getDefaultToolkit();
    		i = tk.getImage(imageItem+ ".jpg");
     
    		this.setPreferredSize(new Dimension(20,20));	
    		//TailleImage=i.getHeight(this);	
     
    		//System.out.println("gr=" + " " + gr);
    		this.setImage(i);
     
    	}
     
    	//Récup l'image et lui donne une nouvelle valeur
     
    	public Image getImage()
    	{
    		return this.img;
    	}
     
    	public void setImage(Image img)
    	{
    		if(this.img!=i)
    		{
    			this.img=i;
    		}
    	}
     
    	//Permet de savoir si une case est franchissable
     
    	public boolean isFranchissable()
    	{
    		return this.franchissable;
    	}
     
    	public void setFranchissable( boolean value)
    	{
    		if (this.franchissable!=value)
    		{
    			franchissable=value;
    		}
    	}
     
    	// Permet de savoir si une case est visible
     
    	public boolean isVisible()
    	{
    		return this.visible;
    	}
     
    	public void setVisible(boolean value)
    	{
    		if(this.visible!=value)
    		{
    			visible=value;
    		}
    	}
     
    	//Récup et donne une nouvelle combinaison à la case
     
    	public String getCombinaison()
    	{
    		return combinaison;
    	}
     
    	public void setCombinaison(String value)
    	{
    		if(this.combinaison!=value)
    		{
    			combinaison=value;
    		}
    	}
     
    	public void afficher(String ImageItem, int _x, int _y)
    	{
    		if(this.visible==true)
    		{
    			Toolkit tk = Toolkit.getDefaultToolkit();
    			i = tk.getImage(imageItem+ ".jpg");
    			repaint();
     
    			System.out.println("i=" + " " + i);
    		}
    	}
     
     
     
    	public void paint(Graphics gr, int _xx, int _yy)
    	{	
    		System.out.println("Appel Paint1");
     
    			if(this.visible==true)
    			{
    				System.out.println("Appel Paint2");
    				if(i!=null)
    				{
    					System.out.println("xx=" + " " + _xx);
    					System.out.println("yy=" + " " + _yy);
    					System.out.println("g=" + " " + gr);
     
    					gr.drawImage(i, _xx, _yy, this);
    					System.out.println("Appel Paint3");
    				}
    				else
    				{ 
    					System.out.println("PAS DE DESSIN");
    				}
    			}
    	}
    }
    Le truc c qu'il agit comme si je ne faisait pas de chargement d'image, pouvez vous m'aider a savoir pkoi il fait sa?

  12. #12
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut chargement contrôlé -> MediaTracker
    Ajoute un MediaTracker! ça donnerait qqch comme ça:
    Citation Envoyé par chocoboy
    Dsl, j'ai effacé une balise
    // (...) tu l'ajoutes à la classe case.java
    case.java
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
     
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    public class Case extends Canvas
    {
    	Image i,im, img;
    	String imageItem;
    	dessin d;
    	/** MODIF ***** Media tracker */
            protected MedaiTracker mt = new MediaTracker(this);
     
    	public static int TailleImage;
     
    	protected boolean franchissable;
    	protected boolean visible;
     
    	protected String image;
    	protected String combinaison;
     
     
    	public Case(String imageCase)
    	{
    		imageItem=imageCase;
     
    		franchissable=true;
    		visible=true;
     
    		Toolkit tk = Toolkit.getDefaultToolkit();
    		i = tk.getImage(imageItem+ ".jpg");
     
     
    		this.setPreferredSize(new Dimension(20,20));	
    		//TailleImage=i.getHeight(this);	
     
    		//System.out.println("gr=" + " " + gr);
    		this.setImage(i);
     
    	}
     
    	//Récup l'image et lui donne une nouvelle valeur
     
    	/** MODIF *****  Contrôle la completion du chargement */
     
    	public Image getImage()
    	{
    		 try { mt.waitForID(1); } catch(InterruptedException e) {} finally          {
               return this.img;
              }
    	}
     
    	public void setImage(Image img)
    	{
    		if(this.img!=i)
    		{
                   /** MODIF *****  ajoute le tracker */
    			mt.addImage(i, 1);
                           this.img=i;
    		}
    	}
     
    	//Permet de savoir si une case est franchissable
     
    	public boolean isFranchissable()
    	{
    		return this.franchissable;
    	}
     
    	public void setFranchissable( boolean value)
    	{
    		if (this.franchissable!=value)
    		{
    			franchissable=value;
    		}
    	}
     
    	// Permet de savoir si une case est visible
     
    	public boolean isVisible()
    	{
    		return this.visible;
    	}
     
    	public void setVisible(boolean value)
    	{
    		if(this.visible!=value)
    		{
    			visible=value;
    		}
    	}
     
    	//Récup et donne une nouvelle combinaison à la case
     
    	public String getCombinaison()
    	{
    		return combinaison;
    	}
     
    	public void setCombinaison(String value)
    	{
    		if(this.combinaison!=value)
    		{
    			combinaison=value;
    		}
    	}
     
    	public void afficher(String ImageItem, int _x, int _y)
    	{
    		if(this.visible==true)
    		{
    			Toolkit tk = Toolkit.getDefaultToolkit();
    			i = tk.getImage(imageItem+ ".jpg");
    			repaint();
     
    			System.out.println("i=" + " " + i);
    		}
    	}
     
     
     
    	public void paint(Graphics gr, int _xx, int _yy)
    	{	
    		System.out.println("Appel Paint1");
     
    			if(this.visible==true)
    			{
    				System.out.println("Appel Paint2");
    				if(i!=null)
    				{
    					System.out.println("xx=" + " " + _xx);
    					System.out.println("yy=" + " " + _yy);
    					System.out.println("g=" + " " + gr);
     
    					gr.drawImage(i, _xx, _yy, this);
    					System.out.println("Appel Paint3");
    				}
    				else
    				{ 
    					System.out.println("PAS DE DESSIN");
    				}
    			}
    	}
    }
    Le truc c qu'il agit comme si je ne faisait pas de chargement d'image, pouvez vous m'aider a savoir pkoi il fait sa?

  13. #13
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    J'avais déjà essayere avec un MediaTracker et sans résultat. J'ai vérifié, et mon image est bien charger dans mon tableau de case. Ce qui me prend la tête c'est que je n'arrive pas a afficher cette image a l'emplacement ou g cliké.

    Je pense que cela doit venir de mon paint qui ne tient pas compte de mon chargement. Mais je n'en sais pas plus. Je suis un vrai bleu en java et là, je suis désespéré.

    Si la totalité de mon code est nécessaire, dite moi

  14. #14
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    Check un peu les chargements d'image avec le Toolkit, je n'ai pas tout indiqué au mediatracker. C'est probable que tu n'aies pas l'image qui s'affiche à cause d'un repaint oublié.

  15. #15
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Au lieu de vous ******* l'existence avec Toolkit et MediaTracker, pensez plutôt à ImageIO qui garantit que l'image a été chargée après le retour de la méthode read().

  16. #16
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Gfx
    Au lieu de vous ******* l'existence avec Toolkit et MediaTracker, pensez plutôt à ImageIO qui garantit que l'image a été chargée après le retour de la méthode read().
    C'est clair!
    À moins d'avoir besoin d'un % de chargement de l'image, il faut utiliser ImageIO...

    Malheureusement, c'est sans doute que la méthode avec Toolkit est celle écrite dans la FAQ (j'avais proposé de la changer il y a quelques mois, mais je ne sais même plus où j'avais posté, et apparemment, la mise à jour n'a pas encore eu lieu).

    Une autre "absurdité", sur le post suivant, dans la faq:
    Comment créer un objet de type Image depuis une BufferedImage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image monImage = Toolkit.getDefaultToolkit().createImage(maBufferedImage.getSource());
    C'est évidemment plus simple de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image monImage = maBufferedImage;

  17. #17
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Même pas besoin puisqu'une BufferedImage implémente l'interface Image.

  18. #18
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Gfx
    Même pas besoin puisqu'une BufferedImage implémente l'interface Image.
    Oui, c'est ce que je dit, c'est absurde dans la FAQ de donner cette solution...

    D'ailleurs, c'est plutôt "BufferedImage étend la classe Image"

  19. #19
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oui exact ^^

  20. #20
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    J'ai poste des demandes de correction de la FAQ GUI (dont celle-ci) dans les forums prives il y a qq jours (apres avoir essaye sans succes de contacter les auteurs)... mais j'ignore quand ce sera integre.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2008, 15h29
  2. chargement des images dans une table
    Par sandy07 dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2007, 10h37
  3. Réponses: 3
    Dernier message: 05/03/2007, 23h55
  4. Chargement d'image dans une application graphique
    Par chocoboy dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2006, 22h29
  5. [JLabel] Chargement d'image dans une JFrame
    Par mr.t dans le forum Composants
    Réponses: 10
    Dernier message: 27/01/2005, 19h32

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