我的 JFrame 没有显示带有图片的 JLabel

My JFrame isn't displaying the JLabel with a picture

我和一个朋友正在做游戏,而且我们都不知道 GUI 是怎么做的。我在 Java(业余 C++ 程序员)方面也没有经验,所以当谈到我对我正在做的事情的理解时,这就是你在这里工作的内容。

我编写代码来显示带有 JLabel 和图像的 JFrame。代码加载正常,但图片不存在。

这是我得到的:

package game;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;


public class Pic extends JFrame{
    private static final long serialVersionUID = 1L;

    public Pic(){
        JFrame pic = new JFrame("JFrame");
        JLabel player = new JLabel();
        ImageIcon player_icon = new ImageIcon(getClass().getResource("/res/Untitled.bmp"));
        player.setIcon(player_icon);
        player.setVisible(true);
        player.setSize(100, 100);
        pic.setVisible(true);
        player.setLocation(25, 25);
        pic.setSize(200, 200);
    }

    public static void main (String[] args){
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Pic();
            }
        });
    }
}

这不是游戏本身的一部分,而是 运行 测试 运行 将随机精灵放入名为 res 的包中。 现在我的问题是:我做错了什么导致我看不到我的照片,我该如何解决这个问题?

我也非常感谢详细的 answer/link 可以帮助学习 GUI,而且我似乎无法理解我在此处找到的一些较旧的解释。

but the picture isn't there.

我没看到你在框架中添加标签的位置:

pic.add( label );

I would also really appreciate a detailed answer/link that could help with learning GUIs

从 Swing 教程开始。参见 How to Use Icons

您忘记将 jlabel 添加到 jframe..

pic.add(player);

ImageIcon不支持bmp文件格式,支持gifjpegpng

改为尝试使用 ImageIO。有关详细信息,请参阅 Reading/Loading an Image

BufferedImage img = ImageIO.read(getClass().getResource("/res/Untitled.bmp"));
ImageIcon player_icon = new ImageIcon(img);

此外,您没有将 JLabel 添加到任何内容...

pic.add(label);

还有...

player.setVisible(true);
player.setSize(100, 100);

毫无意义,默认情况下 Swing 组件是可见的并且框架正在使用布局管理器

Creating a GUI With JFC/Swing 标记书本可能会有所帮助。

您可能还会发现 How to Use Labels 也有一些用处

编辑:好的,感谢您指出 madprogrammer。学到了新东西

关于你的另一个问题,一个很好的 gui 教程,我发现 this book 的 GUI 部分很有帮助

这可能是可行的解决方案!!

ImageIcon player_icon = new ImageIcon(getClass().getResource("/res/Untitled.bmp"));

JLabel 播放器 = new JLabel(player_icon); //在JLabel中添加图片

pic.add(玩家); // 在 JFrame

中添加这个标签