如何将图像添加到JButton

时间:2014-10-28 12:23:26

标签: java eclipse jbutton

好的,所以我一直在阅读如何通过使用ImageIcon将图像添加到JButton但它似乎仍然不适合我,下面是我的代码,我正在使用Eclipse工作区,并希望一些帮助下面的代码块是没有导入的程序

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语句中检查文件是否存在而且确实存在。没有抛出错误,但按钮仍然保持默认的蓝色,按钮具有与图像相同的分辨率,如果有任何帮助的话。

如果有人可以帮助我更简单地设置代码并用空格替换制表符,那将非常有用(我喜欢使用制表符而不是空格)

2 个答案:

答案 0 :(得分:0)

ImageIcon尝试在后台加载图片,这就是为什么在出现问题时不会出错的原因。它只是默默地失败,并希望你调用getImageLoadStatus()来查看是否可以加载图像。

我不确定Java是否支持BMP。请尝试使用PNG图像。

答案 1 :(得分: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));