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

Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Dernière intervention
17 avril 2014
-
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
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 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.