How do I add an icon as a classpath resource to an SWT window created with WindowBuilder?

33,904

Solution 1

To easily add an icon to my classpath, I found my desired icon, right clicked it, selected "copy", then went to one of the packages of my project in Eclipse, right clicked, and selected "paste". The next time I brought up the image chooser dialog box, my local package had the icon listed as an available classpath resource, and I chose it. image chooser

I was able to export the project to a runnable JAR, and the icon still worked.

Solution 2

The solution I find to be working is to create a jar containing your images and add it to your class path. Then you will be able to choose them from the dialog in your second screen shot.

I remember this used to work with directories that are in your build path. Now it seems to be forced to be in a jar package.

Solution 3

To add any kind of supported image to your project, just right click on 'src' folder of your project and New... Package... and under Name give, for example, 'resources'. After that you only need to copy your images there. When you export the project to a runable JAR, all resources go together and Runs fine.

Solution 4

I don't know how to do this in WindowBuilder, but you can specify an Image resource while building the Shell via setImage() or setImages(). I suggest using the latter, because it provides the platform with various resolution icons, including the window's control box, the Windows taskbar, and alt+tab list.

Take a look at this snippet.

To load it from a resource:

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);

In this example, I have a subfolder "resources", containing "images", then two PNGs. Specifying a resource JAR should work in a similar way, although I haven't tried it.

Solution 5

In my case, WindowBuilder recognized the *.ico format but didn't replace the default Java icon with my custom icon. It was only when I converted the *.ico to *.png (through this handy online tool) that WindowBuilder finally changed the default Java icon to my custom "icon", even though it's really a PNG. I expected WindowBuilder to be able to recognize the ICO format.

Share:
33,904
Zoot
Author by

Zoot

I am a Software Developer and Linux Geek.

Updated on May 20, 2020

Comments

  • Zoot
    Zoot almost 4 years

    I'm trying to add an external icon from an *.ico file to a window that I'm creating using the WindowBuilder design window. I can select the shell, which brings up an "image" properties field. alt text That brings up the image chooser dialog box: alt text

    How do I make my icon show up in this menu as a classpath resource? The image works if an absolute path is given, but I don't want to use that option in my application.

    Thanks!

  • Zoot
    Zoot over 13 years
    How do you create a jar file containing only one image?
  • mannysz
    mannysz over 13 years
    a jar file is simply a zip archive. use any archive utility (I prefer 7-zip) to create a zip file and change its extension to jar.
  • MultiGuy
    MultiGuy almost 10 years
    I was able to get the image files to successfully show up as a classpath resource, but if I selected them for my JLabel icon, it wouldn't appear. If I selected the image as an absolute path, it appears. I've confirmed the files exist in their package. What could be the issue?
  • Accountant م
    Accountant م almost 4 years
    @MultiGuy It worked fine with me, and the image could be set for my JLabel icon
  • Jonathan Rosenne
    Jonathan Rosenne almost 4 years
    It worked. After doing this, I changed the source removing the path to the image and deleted the copy. It is now using the original.