2012-09-04 68 views
2
public String[] imagesArray = {Images.firstImage, Images.secondImage}; 

String imagesPath = "/testproject/images/"; 
for(int i = 0; i<imagesArray.length; i++) { 
    URL imageURL = this.getClass().getResource(imagesPath+imagesArray[i]); 
    ImageIcon orignalImageIcon = new ImageIcon(imageURL); 
    Image newImage = orignalImageIcon.getImage().getScaledInstance(100, 90, java.awt.Image.SCALE_SMOOTH); 
    ImageIcon newImageIcon = new ImageIcon(newImage); 

    JButton receiptButton = new JButton(newImageIcon); 
    receiptButton.setBorder((new EmptyBorder(0,0,0,0))); 
    toolBar.add(receiptButton); 
    add(toolBar); 
    } 

圖像未在我的設計佈局中顯示?關於使用Java Swing動態加載圖像的問題

+0

在上述問題 「Images.firstImage」,圖像是具有靜態成員名稱的類 'firstImage' 的值是 「print.png」 –

+0

'receiptButton.setBorder((新EmptyBorder(0,0,0,0 )));'...嗯。試試'setBorderPainted()'方法。 –

回答

4

問題很可能是使用ImageIcon加載原始圖像的異步加載特性。

如果是這樣的問題:

  1. 有一個簡單的方法來測試它。將orignalImageIcon添加到按鈕並查看它們是否全部顯示。
  2. 有一個簡單的方法來解決它。使用ImageIO.read(URL)加載圖像 - 這種方法將阻止圖像完全加載。
+0

你可以給我一個例子,我將如何使用ImagesIO.read(URL)加載圖像? –

+2

@FaizanAhmed:這是一個[示例](http://stackoverflow.com/a/2658663/230513)和另一個[示例](http://stackoverflow.com/a/6296381/230513)。 +1,順便說一句。 – trashgod

+0

@FaizanAhmed這個答案解決了這個問題嗎?如果是這樣,當你有機會時,請[接受](http://meta.stackexchange.com/a/65088/155831)答案。 –