我需要在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!我找不到有关如何解决此问题的任何信息
我真的很喜欢这个简单的东西。任何帮助将不胜感激。
答案 0 :(得分:2)
我以前有这个问题,我解决了。假设您的图片位于项目的资源文件夹中:
String yourImg = "sampleImg.png";
...
Label swtImg = new Label(composite, SWT.NONE);
swtImg.setImage(new Image(display, YourClassName.calss.getResourceAsStream(yourImg)));
对我有用! 祝你好运;)