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

Signaler
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
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

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
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));
}