为了账号安全,请及时绑定邮箱和手机立即绑定

JLabel不会在课堂上显示图像

JLabel不会在课堂上显示图像

一只斗牛犬 2023-10-19 21:08:12
我目前正在尝试创建一个 GUI,其中两个硬币图像在边框布局的中心彼此相邻显示。我有一个类(图像),我尝试在其中使用 JLabel 来显示图标,另一个类处理 GUI 框架(GameGUI)。然而,尽管我尽了最大努力,标签仍不显示图像。我浏览了无数的教程,但找不到任何东西可以解决这个问题。相对路径是正确的,我该如何解决这个问题?图片类public class Images extends JLabel{    private JLabel heads, tails;    public Images() {        heads = new JLabel(new ImageIcon("img/heads.png"));        tails = new JLabel(new ImageIcon("img/tails.png"));        add(heads);        add(tails);    }}游戏GUI类public class GameGUI extends JFrame{    public GameGUI() {        super("");        setLayout(new BorderLayout(10,10));        Menu menu = new Menu();        ToolBar toolBar = new ToolBar();        Images images = new Images();        setJMenuBar(menu);        add(BorderLayout.NORTH, toolBar);        add(BorderLayout.CENTER, images);        setSize(1000, 500);        setLocationRelativeTo(null);        setVisible(true);        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);    }}
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

问题:


public class Images extends JLabel{


    private JLabel heads, tails;


    public Images() {

        heads = new JLabel(new ImageIcon("img/heads.png"));

        tails = new JLabel(new ImageIcon("img/tails.png"));

        add(heads);

        add(tails);

    }

}

JLabels 使用空布局,这意味着您的内部 JLabel 组件的大小将为 0, 0,并且图像 JLabel 本身将具有相同的首选大小,并且不会显示任何内容,因此您永远不想将 JLabel 添加到J标签。不要让图像扩展 JLabel,而是扩展 JPanel,并给它一个像样的布局,也许是 GridLayout。


例如。,


public class ImagePanel extends JPanel {

    private JLabel headsLabel = new JLabel();

    private JLabel tailsLabel = new JLabel();


    public ImagePanel(Icon headsIcon, Icon tailsIcon) {

        headsLabel.setIcon(headsIcon);

        tailsLabel.setIcon(tailsIcon);

        setLayout(new GridLayout(1, 0);

        add(headsLabel);

        add(tailsLabel);

    }       

}

再次,我建议将图像作为资源获取,而不是使用 ImageIO 读取的文件,例如


Image headImage = ImageIO.read(getClass().getResource(resourcePath));

Icon headIcon = new ImageIcon(headImage);

资源路径至关重要,并且取决于图像相对于类文件的位置。


查看完整回答
反对 回复 2023-10-19
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信