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 クラスでは画像を使用します。

getIcon() メソッドが行っていることを SWT でコピーする方法はありますか? 画像を取得するメソッドを書き直すことは可能ですか?

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

画像ファイルの 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 に答える
1

Windows ビルダーには Utils クラスがあり、リソースを 1 か所に保持し、それらを確実に破棄するために参照する必要があります。

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 に答える