2010-03-08 65 views
0

如何將圖像放置在單元格邊界內?如何在單元格邊界內顯示圖像

我的意思是沒有考慮到其他細胞的空間? 在下面的代碼中,選擇了隨機單元格來顯示圖像。一個單元格中的一個圖像。 問題是,圖像似乎也採取其他單元格。 alt text http://www.freeimagehosting.net/image.php?9f84119a63.jpg

... 
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

你想擁有相同尺寸的所有圖像嗎? – Jack 2010-03-08 01:34:42

+0

不,我隨機縮放圖像並隨機選擇單元格。 – Jessy 2010-03-08 01:47:04

回答

2

什麼樣的問題,這是?你對同一主題有大約5個問題。你發佈的隨機代碼是無用的,除非人們已經閱讀了前面所有的4個問題,並且對你在做什麼有一些瞭解。我知道我已經閱讀過他們,但仍然不明白。

單元格沒有邊界。將組件添加到單元格時,單元格將是您添加的組件的大小。由於您只有少數被佔用的單元格,因此大多數單元格都沒有實際大小。因此假設如果你想爲未佔用的單元格創建一個新組件,例如在位置(3,4)處,我想你需要查看第3行的所有單元格以確定該單元格的最大高度行。然後,您需要查看第4列中的所有單元格以確定最大寬度。將兩者結合起來,就可以得到細胞的大小。

你已經知道如何得到約束,所以你應該能夠找出其餘的。

再次,我可能不知道你在做什麼,因此我的回答只是一個大漫步。

如果您需要更多幫助,請發送您的SSCCE

相關問題