Java 对背景图像使用JLabel

Java 对背景图像使用JLabel,java,swing,jframe,jlabel,imageicon,Java,Swing,Jframe,Jlabel,Imageicon,当我运行代码时,它只会打开一个空窗口 必要时我也很重要 守则的有关部分: public class Game extends JFrame implements ActionListener,KeyListener{ private JLabel background; .... public Game(){ background=new JLabel(new ImageIcon("/graphics/board.gif")); ... this.add(background);

当我运行代码时,它只会打开一个空窗口 必要时我也很重要

守则的有关部分:

public class Game extends JFrame implements ActionListener,KeyListener{
    private JLabel background; 
....  
public Game(){
background=new JLabel(new ImageIcon("/graphics/board.gif"));
...
this.add(background);
this.setSize(800,600);
this.setVisible(true);...

我尝试将JLabel添加到JPanel中,然后将其添加到框架中,但在窗口中仍然没有显示任何内容

重要的是在布局中设置元素的显示顺序,可能标签上显示了某些内容。

最初的代码是:

JLabel background = new JLabel("/graphics/board.gif");
这不会在描述的路径上设置图像,建议使用以下方法(可以简化为仅使用不同的JLabel构造函数,但为了清晰起见,显示了步骤)

创建并加载图像,然后设置标签图标,如下所示

ImageIcon icon = new ImageIcon("/graphics/board.gif"); 
JLabel background = new JLabel();
background.setIcon(icon);

我猜您的目录结构类似于:

-c:\java - source (for source and class files) - graphic (for your images) 不要在文件名中指定前导“/”。这告诉Java查看C驱动器的根目录,而不是类执行所在的目录

此外,不要使用:

this.setSize(800,600);
图像不会拉伸以填充帧的大小。Intead您应该使用:

this.pack();

因此,框架将是图像的大小。

我认为您对
JLabel
使用了错误的构造函数(假设您不想显示文本“/graphics/board.gif”)。不应该,但这不是原始帖子的内容。它是新的JLabel(“/graphics/board.gif”)
this.pack();