Loading Image in Java Applet

后端 未结 4 489
伪装坚强ぢ
伪装坚强ぢ 2021-01-21 21:18

When I try to run an applet in applet viewer it is not able to find resources (Image). I try to load resource like this:

String cb= this.getCodeBase().toString()         


        
相关标签:
4条回答
  • 2021-01-21 21:54

    Just use /com/blah/Images/a.png as the path. getResource() is clever enough to find it.

    0 讨论(0)
  • 2021-01-21 21:58

    Try this code it's only 2 methods out of the class I use to load images but it works fine for loading when using an applet.

    private URL getURL(String filename) {
        URL url = null;
        try 
        {
            url = this.getClass().getResource("" + extention + filename); //extention isn't needed if you are loading from the jar file normally. but I have it for loading from files deeper within my jar file like say. gameAssets/Images/ 
        }
        //catch (MalformedURLException e) { e.printStackTrace(); }
        catch (Exception e) { }
    
        return url;
    }
    

    //observerwin in this case would be an applet. Simply have the class have something like this: Applet observerwin

    public void load(String filename) {
    
        Toolkit tk = Toolkit.getDefaultToolkit();
        image = tk.getImage(getURL(filename));
        while(getImage().getWidth(observerwin) <= 0){loaded = false;}
        double x = observerwin.getSize().width/2  - width()/2;
        double y = observerwin.getSize().height/2 - height()/2;
        at = AffineTransform.getTranslateInstance(x, y);
        loaded = true;
    }
    

    I can post the rest of the class I use if needed

    0 讨论(0)
  • 2021-01-21 22:04

    The context classloader should work with jars.

    ClassLoader cl = Thread.getContextClassLoader();
    ImageIcon icon = new ImageIcon(cl.getResource("something.png"), "description");
    
    0 讨论(0)
  • 2021-01-21 22:05

    Is your applet supposed to load images after it is loaded? Or would you be better served bundling necessary image resources in the jar with your applet?

    I work daily on an applet-based application with plenty of graphics in the GUI. They are bundled in the jar-file. This si what we do:

    // get the class of an object instance - any object.  
    // We just defined an empty one, and did everything as static.
    class EmptyClass{}
    Class loadClass = new EmptyClass().getClass();
    // load the image and put it directly into an ImageIcon if it suits you
    ImageIcon ii = new ImageIcon(loadClass.getResource("/com/blah/Images/a.png"));
    // and add the ImageIcon to your JComponent or JPanel in a JLabel
    aComponent.add(new JLabel(ii)); 
    

    Make sure your image is actuallly in the jar where you think it is. Use:

    jar -tf <archive_file_name>

    ... to get a listing.

    0 讨论(0)
提交回复
热议问题