我想在面板中设置图像图标。我试图这样做;在面板中设置图像图标
JLabel label = new JLabel(new ImageIcon("logo.jpg"))
panelHeader.add(label);
add(panelHeader);
但图像没有显示。任何建议我做错了什么?
我想在面板中设置图像图标。我试图这样做;在面板中设置图像图标
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);
我应该为createImageIcon方法导入什么? – 2012-04-22 09:44:36
显然它返回ImageIcon对象。 ImageIcon类属于属于javax的swing。 – miqbal 2012-04-22 09:48:33
new ImageIcon("logo.jpg")
的String
基于构造函数的ImageIcon
假定该字符串表示文件路径。由于这是一个通过运行时添加到面板的图像,因此它可能位于Jar内,因此无法作为File
访问。对于嵌入式应用程序资源,唯一可行的访问是URL
。该网址可能从以下类似网址获得:
URL logoUrl = this.getClass().getResource("/logo.jpg");
请注意领先的/
。这告诉JRE搜索相对于类路径根的路径上的资源,而不是相对于加载它的类的包的路径。
+1 for'viable access' – miqbal 2012-04-22 10:29:59
请编辑您的问题以包含一个[sscce](http://sscce.org/),其中显示了添加标签的容器的布局。 – trashgod 2012-04-22 09:47:45
您正在使用哪个IDE,或者您正在手动执行此操作。你有很好的答案,这个线程,[如何访问图像(应用程序资源)](http://stackoverflow.com/a/9866659/1057230),可能可以帮助你进一步。 – 2012-04-22 11:16:59