Avatar billede netro Nybegynder
18. oktober 2005 - 19:04 Der er 36 kommentarer og
1 løsning

getDocumentBase() og init()

Er det ikke muligt at bruge getDocumentBase() andre steder end i init()?

Jeg synes, jeg får den ene og den anden fejl, når jeg forsøger at få erklæret følgende i en anden klasse. Jeg har også prøvet med getCodeBase() og getResource() samt at overføre værdien fra init() til klasse, der skal loade billedet.

MyImg = getImage(getDocumentBase(), "images/myimg.png");
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:07 #1
getDocumentBase er en metod ei Applet klassen og kan derfor kun
kaldes i direkte den

i en anden klasse skal du have en reference til Applet instansen
for at kunne bruge den

jeg foreslår at du pakker alle din class og png i en jar fil og så
henter billeder fra den med getResource
Avatar billede netro Nybegynder
18. oktober 2005 - 19:09 #2
Ahh... ok! Jeg har også lagt det i en jar, men hvad siger du så, at jeg kan skrive det?
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:15 #3
ImageIcon icon = new ImageIcon(getClass().getResource("images/myimg.png"));

er en af de mulige varianter
Avatar billede netro Nybegynder
18. oktober 2005 - 19:16 #4
Ja, det virker nu. Tak!
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:18 #5
så ligger jeg et svar
Avatar billede netro Nybegynder
18. oktober 2005 - 19:47 #6
Billederne bliver dog ikke loadet, når jeg ligger jar-filen og html-filen op på en webserver?
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:01 #7
ligger billedet rigtigt i jar filen ?
Avatar billede netro Nybegynder
18. oktober 2005 - 20:25 #8
Billederne ligger i en mappe i jar-filen. Så jeg ved ikke, om det er rigtigt eller forkert, men det kører fint lokalt.
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:28 #9
prøv lige

ImageIcon icon = new ImageIcon(getClass().getClassloder().getResource("images/myimg.png"));
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:29 #10
ellers prøv og post output fra jar tvf på din jar fil
Avatar billede netro Nybegynder
18. oktober 2005 - 20:34 #11
Det har jeg prøvet at lege lidt med, men jeg kan ikke få getClass().getResource("images/myimg.png")) til at fungere. Lige nu overfører jeg en instans af klassen med init() til klassen, der loader billederne og siger:

MyImg = HovedInstans.getImage(HovedInstans.getDocumentBase(), "images/myimg.png");
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:37 #12
heller ikke med en indskudt .getClassloder() ?
Avatar billede netro Nybegynder
18. oktober 2005 - 20:51 #13
Ja...
cannot find symbol
symbol  : method getClassloader()

MyImg = HovedInstans.getImage(getClass().getClassloder().getResource("images/myimg.png"));
Avatar billede netro Nybegynder
18. oktober 2005 - 20:51 #14
Jeg mener nej...
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:54 #15
.getClassLoader()

stort L
med a

sorry
Avatar billede netro Nybegynder
18. oktober 2005 - 20:59 #16
A'et fik jeg puttet ind, men L'et havde jeg ikke rettet. Nu kompilerer det fint, men kan dog stadig ikke se billederne. Jeg prøver lige lidt selv igen.
Avatar billede netro Nybegynder
18. oktober 2005 - 21:35 #17
Næ, det ser stadig ikke ud til at virke. Har du andre forslag?
Avatar billede arne_v Ekspert
18. oktober 2005 - 22:23 #18
Avatar billede arne_v Ekspert
18. oktober 2005 - 22:23 #19
Avatar billede arne_v Ekspert
18. oktober 2005 - 22:24 #20
koden er så simpel som den kan blive:

package demo;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JLabel;

public class ImageIconApplet extends JApplet {
    public ImageIconApplet() {
        ImageIcon icon = new ImageIcon(getClass().getClassLoader().getResource("images/blue.jpg"));
        this.add(new JLabel(icon));
    }
}
Avatar billede netro Nybegynder
18. oktober 2005 - 23:03 #21
Hmm... det forstår jeg ikke. Men det virker jo åbenbart fint. Tak igen.
Avatar billede arne_v Ekspert
18. oktober 2005 - 23:09 #22
du kan godt se den blå firkant ?

men det virker stadig ikke hos dig ?
Avatar billede netro Nybegynder
18. oktober 2005 - 23:11 #23
Ja, den kan jeg godt se. Det er derfor, jeg undrer mig lidt. Nu bruger jeg godt nok Image fremfor ImageIcon, men det burde vel ikke betyde noget.
Avatar billede netro Nybegynder
18. oktober 2005 - 23:21 #24
Jeg får returneret adressen:

http://www.domain.dk/images/myimg.png
Avatar billede netro Nybegynder
18. oktober 2005 - 23:25 #25
Og jar-filen ligger i roden. Dvs. http://www.domain.dk/
Avatar billede arne_v Ekspert
18. oktober 2005 - 23:34 #26
Jeg tror ikke at den henter har filen men derimod class filen.

Hvordan ser dit applet tag ud ?
Avatar billede netro Nybegynder
18. oktober 2005 - 23:42 #27
<APPLET CODEBASE="." CODE="initklasse.class" ARCHIVE="jarfil.jar" WIDTH="900" HEIGHT="500"></APPLET>
Avatar billede netro Nybegynder
18. oktober 2005 - 23:44 #28
Det er kun jar-filen og html-filen, der ligger i mappen. Intet andet.
Avatar billede arne_v Ekspert
18. oktober 2005 - 23:56 #29
package demo;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JLabel;

public class ImageIconApplet extends JApplet {
    public ImageIconApplet() {
        //ImageIcon icon = new ImageIcon(getClass().getClassLoader().getResource("images/blue.jpg"));
        //this.add(new JLabel(icon));
        this.add(new JLabel(getClass().getClassLoader().getResource("images/blue.jpg").toString()));
    }
}

viser

http://www.vajhoej.dk/arne/eksperten/temp/debug.jar!/images/blue.jpg

hos mig
Avatar billede netro Nybegynder
19. oktober 2005 - 07:51 #30
Ja, jeg mangler åbenbart "/fil.jar!",  men jeg kan ikke finde ud af hvorfor.
Avatar billede netro Nybegynder
19. oktober 2005 - 18:12 #31
Skal jeg oprette en ny tråd? Dette var jo sådan set et tillægsspørgsmål.
Avatar billede arne_v Ekspert
19. oktober 2005 - 18:27 #32
ikke nødvendigvis
Avatar billede arne_v Ekspert
19. oktober 2005 - 18:29 #33
hvordan ser (den relevante del af) din Java kode ud nu
Avatar billede netro Nybegynder
19. oktober 2005 - 18:38 #34
Ja, nu aktiverer jeg simpelthen en messagebox i init(), der viser stien. Og den siger følgende (når jar benyttes vel at mærke):

getDocumentBase(): "C:\bla\bla\programfolder\webdok.htm"
getCodeBase(): "C:\bla\bla\programfolder\"
getClass().getResource("images/myimg.png"): "C:\bla\bla\programfolder\images\myimg.png"
getClass().getClassLoader().getResource("images/myimg.png"): "C:\bla\bla\programfolder\images\myimg.png"
Avatar billede netro Nybegynder
19. oktober 2005 - 18:47 #35
Hov, nu ledte jeg vist mig selv på sporet. "Images" var skrevet med lille "i". Derfor fungerede det ikke på serveren, men lokalt var der dog ingen problemer.
Avatar billede arne_v Ekspert
19. oktober 2005 - 18:51 #36
windows lokalt linux på server måske ?
Avatar billede netro Nybegynder
19. oktober 2005 - 19:01 #37
Nej, Win begge sted. Lidt sjovt synes jeg...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester