0

我的 src 目录中有一个名为 images 的包。我在我的项目中使用了很多图像。我在我唯一的 Swing 类中使用一种方法来获取图标。

 public Icon getIcon(String name) {
    Icon icon = null;
    URL url = null;
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    try {
       url = classLoader.getResource(name);
       icon = new ImageIcon(url);
    } 
    catch (Exception e) {
       System.out.println("Couldn't find " + getClass().getName() + "/" + name);
       e.printStackTrace();
    }
 return icon;
}

获取图标

getIcon("/images/pdfClose.png");

这对图标很有用,但在我的 SWT 类中,我使用图像。

SWT 中有没有办法复制 getIcon() 方法正在做的事情?是否可以重写获取图像的方法?

public ImageIcon getImage(String name) {
   ImageIcon image = null;
   URL url = null;
   ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
   try {
     url = classLoader.getResource(name);
     image = new ImageIcon(url);
   } 
   catch (Exception e) {
      System.out.println("Couldn't find " + getClass().getName() + "/" + name);
      e.printStackTrace();
   }
 return image;
}

我知道它会抛出错误 This instance method cannot override the static method from Dialog

但是有解决办法吗?

4

4 回答 4

4

我真的不明白,你在哪里挣扎。这是我加载图像的方法:

public static Image loadImage(String path, boolean inJar)
{
    Image newImage = null;

    try
    {
        if(inJar)
        {
            newImage = new Image(null, YOUR_MAIN_CLASS.class.getClassLoader().getResourceAsStream(path));
        }
        else
        {
            newImage = new Image(null, path);
        }
    }
    catch(SWTException ex)
    {
        System.out.println("Couldn't find " + path);
        e.printStackTrace();
    }

    return newImage;
}

请注意,我不会将图像保存在该src文件夹中,因为该文件夹用于存放源文件。我img在项目的根目录中有一个文件夹,并通过以下方式访问图像:

Image image = Images.loadImage("img/myImage.png", true);
于 2012-11-30T17:39:14.137 回答
1

Windows builder 中有一个 Utils 类,您可能希望查看它以将资源保存在一个地方并确保您处理它们。

http://dev.eclipse.org/svnroot/tools/org.eclipse.windowbuilder/trunk/org.eclipse.wb.rcp/resources/1.4/org/eclipse/wb/swt/SWTResourceManager.java

于 2012-11-30T17:50:47.330 回答
1

从图像文件的 URL 获取 SWT 图像我们不需要首先获取 ImageIcon,下面的示例代码我们可以从 URL 中获取 SWT 图像,

Image imgSWT=null;  // Image class is the SWT Image class
ImageDescriptor imgDesc=null;
java.net.URL imgURL = YourClassName.class.getResource("path/image_filename");

if (imgURL != null) {
    imgDesc = ImageDescriptor.createFromURL(imgURL);
    imgSWT = imgDesc.createImage();
}
于 2015-09-10T23:37:53.130 回答
0

在您的项目下创建一个名为“res”的新文件夹。将所有图像放在此文件夹下。

File file = new File("res/yourImage.Extension");
Image image = new Image(Display.getDefault(), file.getPath());
于 2017-04-12T06:54:10.187 回答