Mettre des photos aléatoirement dans une Grille

Résolu
Maroc789
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
- Modifié par cs_Julien39 le 3/04/2014 à 07:57
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 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.

1 réponse

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
3 avril 2014 à 08:05
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));
}
2