【问题标题】:Using JLabel for a background image使用 JLabel 作为背景图像
【发布时间】:2013-06-23 20:37:39
【问题描述】:

当我运行代码时,它只会打开一个空窗口 我也很重要,无论什么是必要的

相关部分代码:

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 使用了错误的构造函数(假设您不想显示 text "/graphics/board.gif")。跨度>

标签: java swing jframe jlabel imageicon


【解决方案1】:

原来的代码是:

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

这不会将图像设置在所描述的路径,建议使用以下方法(这可以简化为只使用不同的 JLabel 构造函数,但为清楚起见显示了步骤)

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

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

Link to ImageIcon Java Doc

【讨论】:

  • 不,不应该,但这不是原始帖子的内容。是new JLabel("/graphics/board.gif");
【解决方案2】:

在布局中设置元素的显示顺序很重要,也许你有一些东西显示在标签上..

【讨论】:

    【解决方案3】:

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

    -c:\java - source(用于源文件和类文件) - 图形(用于您的图像)
    background=new JLabel(new ImageIcon("/graphics/board.gif"));
    

    不要在文件名中指定前导“/”。这告诉 Java 查看 C 驱动器的根目录,而不是执行类的目录。

    另外,不要使用:

    this.setSize(800,600);
    

    图像不会拉伸以填充框架的大小。 Intead 你应该使用:

    this.pack();
    

    所以框架将是图像的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 2016-08-06
      • 2012-12-31
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多