如何在Java SWT中显示PNG图像?

时间:2018-08-18 00:30:36

标签: java eclipse swt bufferedimage windowbuilder

我需要在SWT Java窗口中显示PNG图像,我正在使用WindowBuilder和Eclipse。

首先,我尝试使用标签和以下代码:

Label lblNewLabel = new Label(this, SWT.NONE);
        lblNewLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true, 1, 1));
        Image image = new Image(display, "img/selae_mini.png");     
        lblNewLabel.setImage(image)

在eclipse中执行时它可以工作,但是当我生成jar时,它就无法工作。然后我在stackoverflow上发现必须使用ClassLoader.getSystemClassLoader().getResourceAsStream来获得bufferedImage,然后必须将bufferedImage转换为ImageData,最后将其转换为SWT { {1}}。 上帝之母 。所以我尝试了以下代码:

Image

现在的问题是我的Image是一个png文件,并且在执行convertToSWT方法的IF时,得到的是该图像具有一个名为#pixelBits的ColorModel,因此该方法返回null!我找不到有关如何解决此问题的任何信息

我真的很喜欢这个简单的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我以前有这个问题,我解决了。假设您的图片位于项目的资源文件夹中:

String yourImg = "sampleImg.png";
...
Label swtImg = new Label(composite, SWT.NONE);
swtImg.setImage(new Image(display, YourClassName.calss.getResourceAsStream(yourImg)));

对我有用! 祝你好运;)