Java 如何将图像添加到JButton

Java 如何将图像添加到JButton,java,eclipse,jbutton,Java,Eclipse,Jbutton,好的,我一直在阅读如何使用ImageIcon将图像添加到JButton上,但它似乎对我仍然不起作用,下面是我的代码,我正在使用Eclipse workspace,需要一些帮助下面的代码块是没有导入的程序 public class Gui extends JFrame { //Declaration of JPanels JPanel Left = new JPanel(null); JPanel Right = new JPanel(null); JPanel TopAd = new JPan

好的,我一直在阅读如何使用ImageIcon将图像添加到JButton上,但它似乎对我仍然不起作用,下面是我的代码,我正在使用Eclipse workspace,需要一些帮助下面的代码块是没有导入的程序

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);

}
公共类Gui扩展JFrame{
//JPanels声明
JPanel Left=新的JPanel(空);
JPanel Right=新的JPanel(空);
JPanel-TopAd=新的JPanel(空);
JPanel RightAd=新的JPanel(空);
//右旋斜视
ImageIcon img=新的ImageIcon(“buttonicon.bmp”);
JButton[]案例=新JButton[26];
公共图形用户界面(){
File imageCheck=新文件(“src/buttonicon.bmp”);
if(imageCheck.exists()){
System.out.println(“找到图像文件!”);
对于(int i=0;i<26;i++){
Case[i]=新的JButton(String.valueOf((i+1));
案例[i].setIcon(新的ImageIcon(“src/buttonicon.bmp”);
}
}
setLayout(空);
添加(左);
加(右);
添加(TopAd);
加上(右图);
左图:后退(10、20、220、685);
左。背景(颜色。黑色);
右图:立根(240125500580);
右。挫折背景(颜色。蓝色);
顶部立根(240,20635,95);
顶面挫折背景(颜色:暗灰色);
右侧立根(750125125580);
右侧退根(颜色为绿色);
//初始化右JPanel
对于(int i=0;i<26;i++){
对。添加(案例[i]);
}
案例[0]。挫折(20,5,110,75);
案例[1]。挫折(135,5,110,75);
案例[2]。挫折(250,5,110,75);
案例[3]。挫折(365,5,110,75);
案例[4]。挫折(20,85,110,75);
案例[5]。挫折(135,85,110,75);
案例[6]。挫折(250,85,110,75);
案例[7]。挫折(365,85,110,75);
案例[8]。挫折(20,165,110,75);
案例[9]。挫折(135,165,110,75);
案例[10]。挫折(250,165,110,75);
案例[11]。挫折(365,165,110,75);
案例[12]。挫折(20245110,75);
案例[13]。挫折(135,245,110,75);
案例[14]。立根(250,245,110,75);
案例[15]。挫折(365,245,110,75);
案例[16]。挫折(20325110,75);
案例[17]。挫折(135325110,75);
案例[18]。挫折(250325110,75);
案例[19]。挫折(365,325,110,75);
案例[20]。立根(20405110,75);
案例[21]。挫折(135405110,75);
案例[22]。立根(250405110,75);
案例[23]。挫折(365,405,110,75);
案例[24]。立根(135,485,110,75);
案例[25]。立根(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"));
        }
    }
File imageCheck=新文件(“src/buttonicon.bmp”);
if(imageCheck.exists()){
System.out.println(“找到图像文件!”);
对于(int i=0;i<26;i++){
Case[i]=新的JButton(String.valueOf((i+1));
案例[i].setIcon(新的ImageIcon(“src/buttonicon.bmp”);
}
}
我在文件中加入了一个if语句来检查文件是否存在,它是否存在。没有抛出错误,但是按钮仍然保持默认的蓝色,如果有帮助,按钮的分辨率也与图像相同


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

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


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

将图像添加到源代码中,然后您可以尝试将图像作为

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


你知道你正在使用三种不同的路径在代码的不同位置获取图标吗?是的,但图像仍然没有加载我将图像转换为几种类型只是为了检查我是否尝试了png bmp和gif,所以感谢帮助:D png工作,但加载图像状态不工作?当你与某人交谈时,请不要说“没用。”总是准确地说出你做了什么,你期望发生什么,以及发生了什么。
Image img = ImageIO.read(getClass().getResource("src/buttonicon.bmp"));
Case[i].setIcon(new ImageIcon(img));