2012-01-01 57 views
2

我想用Java製作一個簡單的相冊。要做到這一點,我認爲這將是使用gridlayout協調圖片的最簡單方法。使用GridLayout的Java相冊

我有我的照片bufferedimages,我想將它們添加到下面的代碼的網格佈局,

BufferedImage a = GUI.createImage(current); 
    Image b = Toolkit.getDefaultToolkit().createImage(a.getSource()); 

    Icon pic = new ImageIcon(b);   
    JButton picB = new JButton("Picture 1", pic); 
    selectB.setVerticalTextPosition(AbstractButton.BOTTOM); 
    selectB.setHorizontalTextPosition(AbstractButton.CENTER); //aka LEFT, for left-to-right locales 
    add(picB); 

我也試圖讓小我的BufferedImage用下面的代碼,

int w = a.getWidth(); 
    int h = a.getHeight(); 
    BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
    AffineTransform at = new AffineTransform(); 
    at.scale(0.6, 0.6); 
    AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); 
    after = scaleOp.filter(a, after); 

但是,eventhoug我最大限度地減少了圖片的大小,按鈕大於圖片,我無法組織圖片。

您有任何建議或新的解決方案嗎?

謝謝。

+0

請原諒我,但我在您的代碼中看不到您在哪裏將佈局管理器設置爲'GridLayout' – 2012-01-01 20:53:24

回答

1

感謝您的回答,我也處理與下列情況;

而不是使用規模,我創建了一個名爲調整

public static BufferedImage resize(BufferedImage img, int newW, int newH) { 
    int w = img.getWidth(); 
    int h = img.getHeight(); 
    BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType()); 
    Graphics2D g = dimg.createGraphics(); 
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); 
    g.dispose(); 
    return dimg; 
} 

然後到我的BufferedImage命名爲BF,我叫調整大小FUNC新功能,並將其轉換爲圖標

bf = resize(bf, bf.getWidth()/3, bf.getHeight()/3); 
Image im = Toolkit.getDefaultToolkit().createImage(bf.getSource()); 
Icon ic = new ImageIcon(im); 

然後我說帶圖像的按鈕,

JButton bt = new JButton("Picture", ic); 
bt.setVerticalTextPosition(AbstractButton.BOTTOM); 
bt.setHorizontalTextPosition(AbstractButton.CENTER); 
add(bt); 
1
picB.setInsets(new Insets(1, 1, 1, 1)); 

一個BufferedImage也是一個圖像,因此b似乎並不需要。

一個BufferedImage有關聯的圖形,所以尺寸調整可以通過以下方式進行:

BufferedImage scaled = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
scaled.getGraphics().drawImage(original, 0, 0, width, height, null);