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 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 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 

1 réponse

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 3 avril 2014 à 08:05
+1
Utile
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));
}
Cette réponse vous a-t-elle aidé ?  
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.