Mettre des photos aléatoirement dans une Grille [Résolu]

Maroc789 7 Messages postés mercredi 2 avril 2014Date d'inscription 17 avril 2014 Dernière intervention - 2 avril 2014 à 19:14 - Dernière réponse : cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention
- 3 avril 2014 à 08:05
Bonsoir, voici mon code :

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class GrilleProjet extends JPanel{
 
 private boolean debug=true;
 private int scale=10;
 
 
 @Override
 public void paintComponent(Graphics g){
  super.paintComponent(g);
  
  if (debug) {
   drawGrid(g);
  }
 }
 
 private void drawGrid(Graphics g) {
  int width = getWidth();
  int height = getHeight();
  int nb1=width/scale;
  int nb2=height/scale;
  Image img;
  ImageIcon in=new ImageIcon("lien de la photo");
  img=in.getImage();

  for (int i = 0; i <= width; i += nb1) {
   
   g.drawLine(i, 1, i, height);
   
  }
  
  for (int i = scale; i <= height; i+=nb2 ) {
   g.drawLine(1, i, width, i);
  }
 
  for(int i=0; i<=width; i+=nb1){
   for(int j=0; j<=height; j+=nb2){
   g.drawImage(img, i, j,nb1,5,null);
   }
 }
 }
 public void setGrid(Boolean bool){
  this.debug=bool;
 }
 
 public Boolean getGrid(){
  return debug;
 }
}



j aimerais afficher aléatoirement sur chaque case de la grille une image parmi des images d'un dossier. Merci de votre compréhension.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 3 avril 2014 à 08:05
1
Merci
Salut,

Je ne regarde pas ton code qui n'est pas la bonne facon de procéder.

Admettons que tu ais une liste de d'images initialisée de cette façon :

List<Image> images = new ArrayList<Image>();
try {
	images.add(ImageIO.read(new File("D:\\image1.jpg")));
	images.add(ImageIO.read(new File("D:\\image2.jpg")));
	images.add(ImageIO.read(new File("D:\\image3.jpg")));
	images.add(ImageIO.read(new File("D:\\image4.jpg")));
} 
catch (IOException e) {
	e.printStackTrace();
}

Déjà, il faut créer une classe qui te permettra d'afficher une image :

public class PanelImage {

	private Image image;

	public PanelImage(Image image){
		this.image=image;
	}

	@Override
	public void paintComponent(Graphics g){
		if(image!=null){
			Graphics2D g2d = (Graphics2D)g;
			g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
			g2d.drawImage(image, 0, 0, getWidth(), getHeight(), null);
		}
	}

}


Une fois que tu as cela, il te suffit de les disposer dans un GridLayout :

JPanel conteneur = new JPanel(new GridLayout(2, 2));
// Mélange les images
Collections.shuffle(images);
for(Image image : images){
	conteneur.add(new PanelImage(image));
}

Merci cs_Julien39 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.