Java 我的JFrame不是';t用图片显示JLabel

Java 我的JFrame不是';t用图片显示JLabel,java,swing,user-interface,Java,Swing,User Interface,我和一个朋友正在做一个游戏,我们都不知道怎么做。我还没有java(业余C++程序员)的经验,所以在我了解我正在做的事情时,你正在处理的事情。p> 我编写了代码来显示带有图像的JLabel的JFrame。代码加载良好,但图片不在那里 以下是我得到的: package game; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingUt

我和一个朋友正在做一个游戏,我们都不知道怎么做。我还没有java(业余C++程序员)的经验,所以在我了解我正在做的事情时,你正在处理的事情。p> 我编写了代码来显示带有图像的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,因为我似乎无法理解我在这里找到的一些旧的解释

但是照片不在那里

我看不到将标签添加到框架的位置:

pic.add( label );
我也非常希望能有一个详细的答案/链接来帮助学习GUI

从Swing教程开始。看

但是照片不在那里

我看不到将标签添加到框架的位置:

pic.add( label );
我也非常希望能有一个详细的答案/链接来帮助学习GUI


从Swing教程开始。请参阅。

您忘记将jlabel添加到jframe

pic.add(player);

您忘记将jlabel添加到jframe

pic.add(player);

ImageIcon
不支持
bmp
文件格式,它支持
gif
jpeg
png

相反,请尝试使用
ImageIO
。有关更多详细信息,请参阅

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组件默认可见,并且框架使用布局管理器

在书上做记号可能会有帮助


您可能还会发现一些用法

图像图标
不支持
bmp
文件格式,它支持
gif
jpeg
png

相反,请尝试使用
ImageIO
。有关更多详细信息,请参阅

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组件默认可见,并且框架使用布局管理器

在书上做记号可能会有帮助


您可能也会发现一些有用的东西

编辑:好的,谢谢您指出这一点。学到了一些新东西


关于你的另一个问题,一个很好的gui教程,我发现编辑的gui部分非常有用:好的,谢谢你指出这一点。学到了一些新东西


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

这可能是一个可行的解决方案

ImageIcon player_icon=新的ImageIcon(getClass().getResource(“/res/Untitled.bmp”)

JLabel player=新的JLabel(player_图标)//在JLabel中添加图像


图.添加(播放器);//将此标签添加到JFrame中这是可能的解决方案

ImageIcon player_icon=新的ImageIcon(getClass().getResource(“/res/Untitled.bmp”)

JLabel player=新的JLabel(player_图标)//在JLabel中添加图像


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

我感到难以置信的愚蠢。。。但是谢谢你的链接和帮助。我真的应该多看看。我觉得自己非常愚蠢。。。但是谢谢你的链接和帮助。我真的应该仔细看一下。不是在这种情况下,它意味着,对于类路径中的每个元素,从那里根开始,否则,它将从试图读取资源的类的包位置开始…不是在这种情况下,它意味着,对于类路径中的每个元素,从那里根开始,否则,它将从试图读取资源的类的包位置开始…,+1。感谢图片上的不兼容通知,我也不知道swing默认为可见。@默认情况下,只有组件、窗口不可见(和
JInternalFrame
)@程序员,你能给我指出一个正确的方向吗?在这个方向上,人们可以用选定的图像绑定输入?我还想知道是否有可能使用坐标而不是像素,因为我隐约记得一些关于这种可能性的东西。什么样的输入?不,Swing只在像素上工作……布局管理器是不同的,一些工作在虚拟级别,这取决于单个布局管理器+1。感谢图片上的不兼容通知,我也不知道Swing默认为可见。@Episha只有组件,默认情况下窗口是不可见的(和
JInternalFrame
)@程序员,你能给我指出一个正确的方向,将输入与选定的图像绑定在一起吗?我还想知道,是否可以使用坐标而不是像素,因为我隐约记得有一些东西提到了这种可能性。什么样的输入?不,Swing只在像素中工作……布局管理器是不同的,有些工作在像素上虚拟级别,这取决于单个布局管理器