在面板中设置图像图标

时间:2012-04-22 09:31:32

标签: java swing

我想在面板中设置图像图标。我想这样做;

 JLabel label = new JLabel(new ImageIcon("logo.jpg"))
 panelHeader.add(label);
 add(panelHeader);

但是图像没有显示。任何暗示我做错了什么?

3 个答案:

答案 0 :(得分:4)

new ImageIcon()构造函数只是创建一个未初始化的图像图标。您必须调用返回ImageIcon源的createImageIcon()方法,以分配给您创建的ImageIcon对象。

ImageIcon icon = createImageIcon("logo.jpg", "my logo");
JLabel label = new JLabel(icon);

答案 1 :(得分:3)

new ImageIcon("logo.jpg")

String的基于ImageIcon的构造函数假定字符串表示文件路径。由于这是一个添加到面板的图像,因此在运行时,它可能位于Jar内部,无法作为File访问。对于嵌入式应用程序资源,唯一可行的访问是URL。该URL可能来自以下内容:

URL logoUrl = this.getClass().getResource("/logo.jpg");

注意领先/。这告诉JRE在相对于类路径的根的路径上搜索资源,而不是相对于加载它的类的包的路径。

答案 2 :(得分:3)

您在创建ImageIcon时有两个很好的答案。您还应该查看添加标签的容器的布局。此example使用FlowLayoutJPanel的隐式默认值。