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

时间:2015-03-05 05:37:23

标签: java swing user-interface

我和一个朋友正在制作游戏,好吧,我们都不知道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的包中放置一个随机精灵的测试。 现在我的问题:我在哪里看不到我的照片我做错了什么?我该如何解决?

我也非常感谢能够帮助学习GUI的详细答案/链接,而且我似乎无法理解我在这里找到的一些旧解释。

5 个答案:

答案 0 :(得分:3)

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的一些用途

答案 1 :(得分:2)

你忘了将jlabel添加到jframe ..

pic.add(player);

答案 2 :(得分:1)

  

但照片不存在。

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

pic.add( label );
  

我也非常感谢能够帮助学习GUI的详细答案/链接

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

答案 3 :(得分:0)

编辑:好的,谢谢你指出疯狂程序员。学到了新的东西

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

答案 4 :(得分:0)

这可能是解决办法!!

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

JLabel player = new JLabel(player_icon); //在JLabel中添加图片

pic.add(播放器); //在JFrame中添加此标签