3

我想在面板中设置一个图像图标。我正在尝试这样做;

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

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

4

3 回答 3

5

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

ImageIcon icon = createImageIcon("logo.jpg", "my logo");
JLabel label = new JLabel(icon);
于 2012-04-22T09:38:45.410 回答
3
new ImageIcon("logo.jpg")

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

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

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

于 2012-04-22T09:57:57.817 回答
3

您在创建ImageIcon. 您还应该查看添加标签的容器的布局。此示例使用FlowLayout, 的隐式默认值JPanel

于 2012-04-22T10:09:00.500 回答