如何将图标作为类路径资源添加到使用WindowBuilder创建的SWT窗口?

16

我正在尝试将一个*.ico文件中的外部图标添加到使用WindowBuilder设计窗口创建的窗口中。我可以选择shell,这将弹出"image"属性字段。 alt text 这将弹出图像选择器对话框: alt text

如何使我的图标作为类路径资源显示在此菜单中?如果给出绝对路径,则该图片有效,但我不想在我的应用程序中使用该选项。

谢谢!

6个回答

29
为了在我的类路径中轻松添加一个图标,我找到了想要的图标,右键单击它,选择“复制”,然后进入Eclipse项目的其中一个包中,右键单击并选择“粘贴”。 下次我打开图像选择对话框时,我的本地包已将该图标列为可用的类路径资源,并我选择它。 image chooser 我可以将该项目导出为可运行的JAR文件,而且该图标仍然能正常工作。

1
我成功地将图像文件作为类路径资源显示出来,但如果我将它们选为JLabel图标,它就不会出现。如果我将图像选择为绝对路径,则会出现。我已确认文件存在于其包中。可能是什么问题? - MultiGuy
@MultiGuy,这对我来说很好用,图像可以设置为我的JLabel图标。 - Accountant م
它起作用了。在这之后,我更改了源代码,删除了图像路径并删除了副本。现在它正在使用原始文件。 - Jonathan Rosenne

6
我发现行之有效的解决方案是创建一个包含图像的jar文件,并将其添加到类路径中。然后,您将能够从第二个屏幕截图中的对话框中选择它们。
我记得以前可以使用构建路径中的目录来完成这项工作,但现在似乎必须强制使用jar包。

如何创建一个仅包含一张图片的Jar文件? - Zoot
2
一个jar文件只是一个zip归档文件。使用任何归档工具(我更喜欢7-zip)创建一个zip文件,然后将其扩展名更改为jar。 - Bahadır Yağan

3
要添加任何支持的图像到您的项目中,只需右键单击项目的“src”文件夹,然后选择“新建...”、“包...”,在名称下方输入“resources”(例如),然后将您的图像复制到该文件夹中。当您将项目导出为可运行的JAR文件时,所有资源都会一起运行,并且可以正常运行。

2
在WindowBuilder中我不知道如何做到这一点,但是您可以通过使用setImage()setImages()在构建Shell时指定一个Image资源。我建议使用后者,因为它提供了包括窗口控制框、Windows任务栏和Alt+Tab列表的各种分辨率图标给平台使用。
查看此片段
从资源中加载它:
final Image small = new Image(shell.getDisplay(),
        "resources/images/icon_16.png");
final Image large = new Image(shell.getDisplay(),
        "resources/images/icon_32.png");
final Image[] images = new Image[] { small, large };
shell.setImages(images);

在这个例子中,我有一个名为“resources”的子文件夹,其中包含“images”,然后是两个PNG。指定资源JAR应该以类似的方式工作,尽管我没有尝试过。

1
在我的情况下,WindowBuilder 能够识别 *.ico 格式,但没有用我的自定义图标替换默认的 Java 图标。只有当我将 *.ico 转换为 *.png(通过这个方便的在线工具)时,WindowBuilder 才最终将默认的 Java 图标更改为我的自定义“图标”,尽管它实际上是一个 PNG。我本来期望 WindowBuilder 能够识别 ICO 格式。

0
在Eclipse Juno 4.2中,图像选择器经常不显示资源文件夹(例如来自Maven结构项目的src/main/resources)。这可能是一个错误。
如果您在Java Build Path窗口(源选项卡)中使用包含选项明确地删除然后添加资源文件夹,它将弹出。即使删除“包含”选项并将其设置回“全部”,它仍将显示。
当然,您可以直接从上下文菜单中右键单击src/main/resources文件夹进行删除和添加。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接