我想在面板中设置图像图标。我想这样做;
JLabel label = new JLabel(new ImageIcon("logo.jpg"))
panelHeader.add(label);
add(panelHeader);
但是图像没有显示。任何暗示我做错了什么?
答案 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使用FlowLayout
,JPanel
的隐式默认值。