2010-03-08 7 views
0

Comment placer une image dans la limite de la cellule? Je veux dire sans prendre l'espace d'une autre cellule? Dans le code ci-dessous, des cellules aléatoires ont été sélectionnées pour afficher des images. Une image dans une cellule. Le problème est que l'image semble également prendre d'autres cellules. alt text http://www.freeimagehosting.net/image.php?9f84119a63.jpgComment afficher une image dans la limite d'une cellule

... 
setPreferredSize(new Dimension(600,600)); 
final int ROWS = 6; 
final int COLS = 6; 
final int IMAGES = 10; 

setLayout(new GridBagLayout()); 
GridBagConstraints gc = new GridBagConstraints(); 
gc.weightx = 1d; 
gc.weighty = 1d; 
gc.insets = new Insets(0, 0, 0, 0);//top, left, bottom, and right 
gc.fill = GridBagConstraints.NONE; 

JLabel[][] label = new JLabel[ROWS][COLS];   
Random rand = new Random(); 

// fill the panel with labels 
for (int i=0;i<IMAGES;i++){ 
    ImageIcon icon = createImageIcon("myImage.jpg"); 
    int r, c; 
    do{  
     //pick random cell which is empty to avoid overlap image in the same cell 
    r = (int)Math.floor(Math.random() * ROWS); 
    c = (int)Math.floor(Math.random() * COLS); 
    } while (label[r][c]!=null); 

    //scale the image        
    int x = rand.nextInt(20)+30; 
    int y = rand.nextInt(20)+30;      
    Image image = icon.getImage().getScaledInstance(x,y, Image.SCALE_SMOOTH); 
    icon.setImage(image); 

    JLabel lbl = new JLabel(icon); 
    gc.gridx = r; 
    gc.gridy = c;    
    add(lbl, gc); //add image to the cell   
    label[r][c] = lbl; 
} 
+0

voulez-vous avoir toutes les images de la même taille? – Jack

+0

non, j'ai aléatoirement mis à l'échelle les images et choisir au hasard la cellule. – Jessy

Répondre

2

Quel genre de question est-ce? Vous avez environ 5 questions sur le même sujet. Le code aléatoire que vous avez posté est inutile à moins que les gens aient lu les 4 questions précédentes et aient une idée de ce que vous faites. Je sais que je les ai lu et ne comprends toujours pas.

Les cellules n'ont pas de limite. Lorsque vous ajoutez un composant à une cellule, la taille de ce dernier est la taille du composant que vous ajoutez. Comme vous n'avez que quelques cellules occupées, la plupart de vos cellules n'ont pas de taille réelle. Donc probablement si vous voulez un nouveau composant à une cellule inoccupée, à la position (3, 4) par exemple, je suppose que vous devriez regarder toutes les cellules de la rangée 3 pour déterminer la hauteur maximum pour cette cellule. rangée. Ensuite, vous aurez besoin de regarder toutes les cellules de la colonne 4 pour déterminer la largeur maximale. Combinez les deux et vous avez la taille de la cellule.

Vous savez déjà comment obtenir les contraintes, vous devriez donc être capable de comprendre le reste.

Ensuite, je n'ai probablement aucune idée de ce que vous faites et donc ma réponse est juste une grande balade. Si vous avez besoin de plus d'aide, envoyez votre SSCCE.

Questions connexes