我想在面板中设置一个图像图标。我正在尝试这样做;
JLabel label = new JLabel(new ImageIcon("logo.jpg"))
panelHeader.add(label);
add(panelHeader);
但图像没有显示。任何建议我做错了什么?
构造new ImageIcon()
函数只是创建一个未初始化的图像图标。您必须调用createImageIcon()
返回ImageIcon
源的方法以分配给您还创建的ImageIcon
对象。
ImageIcon icon = createImageIcon("logo.jpg", "my logo");
JLabel label = new JLabel(icon);
new ImageIcon("logo.jpg")
an的String
基础构造函数ImageIcon
假定字符串表示文件路径。由于这是添加到面板的图像,因此在运行时,它可能位于 Jar 内,并且无法作为File
. 对于嵌入式应用程序资源,唯一可行的访问是通过URL
. 该 URL 可能来自以下内容:
URL logoUrl = this.getClass().getResource("/logo.jpg");
注意前导/
。这告诉 JRE 在相对于类路径的根的路径上搜索资源,而不是相对于加载它的类的包的路径。
您在创建ImageIcon
. 您还应该查看添加标签的容器的布局。此示例使用FlowLayout
, 的隐式默认值JPanel
。