Toon posts:

[Java] Image laden buiten de hoofdklasse

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb alles geprobeerd, maar ik heb dus een Applet en ik haal het plaatje uit de DocumentBase. Maar als je dat dus buiten de hoofdklasse doet geeft dat een probleem. Naja schrijf je toch even een get-Method?

Java:
1
2
3
4
public URL getImgBase()
{
     return getDocumentBase();
}


Heb ik dus gedaan... maar als ik dan buiten de hoofdklasse dit doe:

Java:
1
imgPlane = getImage(getImgBase(),"plane.gif");


Geeft hij geen compilefouten maar als ik de applet run krijg ik dit:

java.lang.NullPointerException
at java.applet.Applet.getDocumentBase(App
at Combat.getImgBase(Combat.java:
at Plane.<init>(Plane.java:13)
at Combat.init(Combat.java:13)
at sun.applet.AppletPanel.run(AppletPanel
at java.lang.Thread.run(Thread.java:534)


---

Is er geen methode om buiten de hoofdklasse een Image te laden?? Had nooit kunnen dromen dat zo iets kleins zoveel problemen zou kunnen geven 8)7

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Iets meer code zou wel handig zijn, bijvoorbeeld waar de nullpointerexception precies optreedt. Heb zo'n gevoel dat dit niet je volledige applet is ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 25-05 19:30

CodeIT

Code IT

Je zou kunnen proberen om een referentie van de applet mee te geven naar de "niet hoofdklasse".
Dan kun je getDocumentBase en GetImage aanroepen als methodes van de applet, want dat zijn ze ook.

Verwijderd

Topicstarter
drm schreef op 08 mei 2004 @ 13:48:
Iets meer code zou wel handig zijn, bijvoorbeeld waar de nullpointerexception precies optreedt. Heb zo'n gevoel dat dit niet je volledige applet is ;)
True :)

Maar de Applet stelt eigenlijk niets voor... wilde gewoon ff uitproberen, denk niet dat je er veel aan hebt maar toch, komt ie:

De hoofdklasse:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.awt.*;
import java.applet.*;
import java.net.URL;

public class Combat extends Applet
{
    Plane objPlane;
            
    public void init() 
    {
        objPlane = new Plane(100,100);
    }

    public void paint(Graphics g) 
    {
        objPlane.paint(g);

        
    }
    
    public URL getImgBase()
    {
        return getDocumentBase();
    }
}


Andere klasse:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Plane extends Combat
{
    Image imgPlane;
    int xPos;
    int yPos;
    
    public Plane(int x, int y)
    {
        xPos = x;
        yPos = y;
        imgPlane = getImage(super.getImgBase(),"plane.gif");
    }
    
    public void paint(Graphics g)
    {
        g.drawImage(imgPlane,xPos,yPos,this);
                            
    }
}

Verwijderd

Topicstarter
JanTenHove schreef op 08 mei 2004 @ 13:56:
Je zou kunnen proberen om een referentie van de applet mee te geven naar de "niet hoofdklasse".
Dan kun je getDocumentBase en GetImage aanroepen als methodes van de applet, want dat zijn ze ook.
En hoe krijgen we dat voor elkaar :D

Verwijderd

Topicstarter
Het lijkt me een simpele omgaven, maar blijkbaar is het niet??

Niemand???

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 25-05 19:30

CodeIT

Code IT

En hoe krijgen we dat voor elkaar
Bij de aanroep van Plane this (is de applet) meegeven.
En dan mijnApplet.getImage en mijnApplet.getImgBase gebruiken.

Verwijderd

Topicstarter
JanTenHove schreef op 08 mei 2004 @ 15:07:
[...]

Bij de aanroep van Plane this (is de applet) meegeven.
En dan mijnApplet.getImage en mijnApplet.getImgBase gebruiken.
Haha dat werkt inderdaad!! Weer wat geleerd!

Ik zal even de oplossing posten, voor het geval dat andere mensen op dit probleem zouden stuiten:

Java:
1
2
3
4
5
6
public Plane(int x, int y, Applet a)
    {
        xPos = x;
        yPos = y;
        imgPlane = a.getImage(a.getDocumentBase(),"plane.gif");
    }


Aanroep:

Plane objPlane = new Plane(200,300,this);

Olej!

tnx people ik kan weer doorkloppen :)

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 13:28

BCC

Ik blijf dit een vieze Java truuk vinden. Kan java dat niet met events (zoals in C++ of C#?)

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik snap niet waarom "Plane" een afgeleide moet zijn van Applet, als je er een nieuwe instantie van maakt in een applet. 't Is (imo) of het één of het ander. Als je de "Plane" inderdaad beschouwt als een "Applet" opzich moet je hem van de applet afleiden, maar dat lijkt mij niet logisch als je een Plane object binnen het applet wilt maken. "Applet" (Combat in dit geval) bevat een Plane, ipv. Plane is een "Applet".

Verder is het imo het netst om de imagebase aan de plane mee te geven. Daarmee maak je hem onafhankelijk van het soort object waarin je de plane wilt gebruiken, bijvoorbeeld in een applicatie, waar je niet zo makkelijke de beschikking hebt over Applet objecten ;) (ik geef maar een voorbeeld, 't is uit OO overwegingen wel goed om daar bij stil te staan).

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1