2014-10-28 214 views
0

好吧,所以我一直在閱讀如何使用ImageIcon將圖像添加到JButton,但它似乎仍然不適合我,下面是我的代碼,我正在使用Eclipse工作區,並且希望一些幫助下面的代碼塊是沒有進口如何將圖像添加到JButton

public class Gui extends JFrame { 

//Declaration of JPanels 
JPanel Left = new JPanel(null); 
JPanel Right = new JPanel(null); 
JPanel TopAd = new JPanel(null); 
JPanel RightAd = new JPanel(null); 
//Decleration For Right JPanel 
ImageIcon img = new ImageIcon("buttonicon.bmp"); 
JButton[] Case = new JButton[26]; 
public Gui() { 
    File imageCheck = new File("src/buttonicon.bmp"); 
    if (imageCheck.exists()) { 
     System.out.println("Image file found!"); 
     for (int i = 0; i < 26; i++) { 
      Case[i] = new JButton(String.valueOf((i + 1))); 
      Case[i].setIcon(new ImageIcon("src/buttonicon.bmp")); 
     } 
    } 
    setLayout(null); 
    add(Left); 
    add(Right); 
    add(TopAd); 
    add(RightAd); 
    Left.setBounds(10, 20, 220, 685); 
    Left.setBackground(Color.black); 
    Right.setBounds(240, 125, 500, 580); 
    Right.setBackground(Color.BLUE); 
    TopAd.setBounds(240, 20, 635, 95); 
    TopAd.setBackground(Color.darkGray); 
    RightAd.setBounds(750, 125, 125, 580); 
    RightAd.setBackground(Color.GREEN); 
    //Initalising Right JPanel 
    for (int i = 0; i < 26; i++) { 
     Right.add(Case[i]); 
    } 
    Case[0].setBounds(20, 5, 110, 75); 
    Case[1].setBounds(135, 5, 110, 75); 
    Case[2].setBounds(250, 5, 110, 75); 
    Case[3].setBounds(365, 5, 110, 75); 
    Case[4].setBounds(20, 85, 110, 75); 
    Case[5].setBounds(135, 85, 110, 75); 
    Case[6].setBounds(250, 85, 110, 75); 
    Case[7].setBounds(365, 85, 110, 75); 
    Case[8].setBounds(20, 165, 110, 75); 
    Case[9].setBounds(135, 165, 110, 75); 
    Case[10].setBounds(250, 165, 110, 75); 
    Case[11].setBounds(365, 165, 110, 75); 
    Case[12].setBounds(20, 245, 110, 75); 
    Case[13].setBounds(135, 245, 110, 75); 
    Case[14].setBounds(250, 245, 110, 75); 
    Case[15].setBounds(365, 245, 110, 75); 
    Case[16].setBounds(20, 325, 110, 75); 
    Case[17].setBounds(135, 325, 110, 75); 
    Case[18].setBounds(250, 325, 110, 75); 
    Case[19].setBounds(365, 325, 110, 75); 
    Case[20].setBounds(20, 405, 110, 75); 
    Case[21].setBounds(135, 405, 110, 75); 
    Case[22].setBounds(250, 405, 110, 75); 
    Case[23].setBounds(365, 405, 110, 75); 
    Case[24].setBounds(135, 485, 110, 75); 
    Case[25].setBounds(250, 485, 110, 75); 

} 

}

我得到的問題是程序

File imageCheck = new File("src/buttonicon.bmp"); 
    if (imageCheck.exists()) { 
     System.out.println("Image file found!"); 
     for (int i = 0; i < 26; i++) { 
      Case[i] = new JButton(String.valueOf((i + 1))); 
      Case[i].setIcon(new ImageIcon("src/buttonicon.bmp")); 
     } 
    } 

我已經把一個if語句來檢查如果F ile存在,它確實存在。沒有錯誤拋出,但按鈕仍然作爲默認的藍色,按鈕具有與圖像相同的分辨率以及如果有任何幫助。

此外,如果有人可以幫助我走出了設置密碼和更換用空格選項卡將是非常感激的一個更簡單的方法(我喜歡使用製表符代替空格)

+1

您是否知道您正在使用三種不同的路徑來獲得不同的圖標你的代碼的地方? – 2014-10-28 12:32:50

+0

是的,我是但圖像仍然沒有加載我轉換爲幾種類型的圖像只是爲了檢查我已經嘗試過PNG和GIF到目前爲止 – Piemansam5 2014-10-28 12:36:23

回答

0

ImageIcon嘗試加載圖像這就是爲什麼當出現問題時不會出錯的背景。它只是默默地失敗,並希望你打電話getImageLoadStatus()看看是否可以加載圖像。

我不確定BMP是否受Java支持。嘗試使用PNG圖像。

+0

感謝您的幫助:D png工作,但加載圖像狀態不工作? – Piemansam5 2014-10-28 12:56:51

+0

當你與某人交談時,請不要說「沒有工作」。總是說**完全**你做了什麼,你希望**發生什麼以及發生了什麼**而不是**。 – 2014-10-28 13:04:38

0

添加您的圖像源,然後你可以嘗試加載圖像爲,

ImageIcon img = new ImageIcon(getClass().getResource("src/buttonicon.bmp")); 
Case[i].setIcon = new JButton (img); 

Image img = ImageIO.read(getClass().getResource("src/buttonicon.bmp")); 
Case[i].setIcon(new ImageIcon(img));