我的代码不显示帧中的图像

时间:2013-09-22 20:22:58

标签: java image swing jbutton embedded-resource

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;




public class Concentration extends JFrame implements ActionListener {

    private JButton buttons[][]=new JButton[4][4];
    int i,j,n;

    public Concentration() {

        super ("Concentration");    
        JFrame frame=new JFrame();
        setSize(10000,10000);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel=new JPanel(new GridLayout(4,4));
        panel.setSize(4000, 4000);

        for( i=0; i<buttons.length; i++){
            for (j=0; j<buttons[i].length;j++){ 
                n=i*buttons.length+buttons[i].length;
                buttons[i][j]=new JButton(new ImageIcon("1.jpg"));

                panel.add(buttons[i][j]);

            }
        }
        add(panel);
        pack();
        setVisible(true);

    }
    public static void main(String args[]){
        new Concentration();
    }

}

我将图像放在包文件夹中的图像文件夹中,但它没有显示。我做错了什么?

我会做一个记忆游戏,但仍然无法做任何事情。我应该使用标签代替图标来显示图片吗?还是jtogglebutton或jbutton?

1 个答案:

答案 0 :(得分:2)

如果图像是内部的(您想要一个相对于您的项目的位置,或者可能打包到您的jar中):

new ImageIcon(getClass().getResource("/images/1.jpg"));

路径是相对的,因此path /将是与项目相同的文件夹中的文件夹(或打包到jar中)。

如果你想要一个外部图像,只需将ImageIcon构造函数放在路径上(例如“C:/.../ file.png”)。但不建议这样做,因为最好将它用作资源。

有关ImageIcon构造函数的更多信息,请参阅here。有关加载类资源的更多信息,请参阅here(Javadoc链接)