【问题标题】:How do I add an icon as a classpath resource to an SWT window created with WindowBuilder?如何将图标作为类路径资源添加到使用 WindowBuilder 创建的 SWT 窗口?
【发布时间】:2011-05-30 03:34:30
【问题描述】:

我正在尝试将 *.ico 文件中的外部图标添加到我正在使用 WindowBuilder 设计窗口创建的窗口中。 我可以选择外壳,它会显示一个“图像”属性字段。 这会打开图像选择器对话框:

如何让我的图标作为类路径资源显示在此菜单中?如果给出了绝对路径,图像就可以工作,但我不想在我的应用程序中使用该选项。

谢谢!

【问题讨论】:

    标签: java eclipse swt classpath windowbuilder


    【解决方案1】:

    我不知道如何在 WindowBuilder 中执行此操作,但您可以在构建 Shell 时通过 setImage()setImages() 指定 Image 资源。我建议使用后者,因为它为平台提供了各种分辨率图标,包括窗口的控制框、Windows 任务栏和 alt+tab 列表。

    Take a look at this snippet.

    从资源中加载它:

    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 应该以类似的方式工作,虽然我没有尝试过。

    【讨论】:

      【解决方案2】:

      我发现可行的解决方案是创建一个包含您的图像的 jar 并将其添加到您的类路径中。然后,您将能够从第二个屏幕截图的对话框中选择它们。

      我记得这曾经与构建路径中的目录一起使用。现在好像是被强制装在jar包里了。

      【讨论】:

      • 如何创建只包含一张图片的jar文件?
      • jar 文件只是一个 zip 存档。使用任何存档实用程序(我更喜欢 7-zip)创建一个 zip 文件并将其扩展名更改为 jar。
      【解决方案3】:

      为了轻松地将图标添加到我的类路径中,我找到了我想要的图标,右键单击它,选择“复制”,然后转到我在 Eclipse 中的项目的包之一,右键单击并选择“粘贴”。 下次我打开图像选择器对话框时,我的本地包将图标列为可用的类路径资源,我选择了它。

      我能够将项目导出到可运行的 JAR,并且该图标仍然有效。

      【讨论】:

      • 我能够让图像文件成功显示为类路径资源,但如果我为我的 JLabel 图标选择它们,它就不会出现。如果我选择图像作为绝对路径,它就会出现。我已经确认文件存在于他们的包中。可能是什么问题?
      • @MultiGuy 它对我来说很好用,并且可以为我的 JLabel 图标设置图像
      • 成功了。这样做之后,我更改了源,删除了图像的路径并删除了副本。它现在正在使用原版。
      【解决方案4】:

      要将任何类型的支持图像添加到您的项目中,只需右键单击项目的“src”文件夹和新建...包...并在名称下给出例如“资源”。之后,您只需将图像复制到那里。 当您将项目导出到可运行的 JAR 时,所有资源都会一起运行并正常运行。

      【讨论】:

        【解决方案5】:

        在 Eclipse Juno 4.2 中。图片选择器通常不显示资源文件夹(例如,来自 Maven 结构化项目:src/main/resources。大概这是一个错误。

        如果您在 Java 构建路径窗口(源选项卡)中使用包含选项显式删除然后添加资源文件夹,它将弹出。即使删除“包含”选项并将其设置回“全部”,它仍然会显示。

        当然,您可以在右键单击 src/main/resources 文件夹时直接从上下文菜单中删除和添加。

        【讨论】:

          【解决方案6】:

          在我的例子中,WindowBuilder 识别 *.ico 格式,但没有用我的自定义图标替换默认 Java 图标。只有当我将 *.ico 转换为 *.png (through this handy online tool) 时,WindowBuilder 才最终将默认 Java 图标更改为我的自定义“图标”,即使它实际上是 PNG。我希望 WindowBuilder 能够识别 ICO 格式。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-06-06
            • 2018-03-29
            • 1970-01-01
            • 2020-02-14
            • 2012-12-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多