[JAVA] image laden met relatief pad

Pagina: 1
Acties:

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
Ik heb het volgende stukje code:
code:
1
2
3
4
5
6
7
8
9
10
      _imagePanel = new JPanel(){
        //Image image = Toolkit.getDefaultToolkit().createImage("U:/Projects/rmi-example/fase-1/images/image.jpg");
        ImageIcon image = new ImageIcon("U:/Projects/rmi-example/fase-1/images/image.jpg");
        
        public void paintComponent(Graphics g){
            super.paintComponents(g);
            //g.drawImage(image, 0, 0, getWidth(), getHeight(), null, null);
            image.paintIcon(this, g, 0,0);
        }
      };

ik heb dus een plaatje dat "image.jpg" heet in de map "images" staan in de map waar ook mijn source files staan. Het moet dan mogelijk zijn door een relatief pad op te geven, dus
code:
1
 ImageIcon image = new ImageIcon("/images/image.jpg");

of
code:
1
Image image = Toolkit.getDefaultToolkit().createImage("/images/image.jpg");

om een plaatje in te laden

Helaas vertikt hij dit te doen :( volgens mij is er verder helemaal niks mis met de syntax. Ik heb het met verschillende "slashes" geprobeert
code:
1
\\ & /

uiteindelijk moet alles in een jar file komen en kan ik dus niet een absoluut pad opgeven.

heeft iemand hier een logische verklaring voor?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op donderdag 20 juni 2002 13:37 schreef CyBoB het volgende:
code:
1
 ImageIcon image = new ImageIcon("/images/image.jpg");

of
code:
1
Image image = Toolkit.getDefaultToolkit().createImage("/images/image.jpg");

om een plaatje in te laden
heeft iemand hier een logische verklaring voor?
En / betekend root bij Linux. Probeer gewoon eens even images/image.jpg te callen

Waarom maakt je btw niet gebruik van de separator in File :?

Verwijderd

Je kunt via je classloader images ophalen via een locatie die relatief is aan je Classfiles (en waarschijlijk dus ook aan je brondcode):
code:
1
URL urltoImage = getClass().getClassLoader().getResource("images/image.png");

Dit geeft een url terug die (absoluut) verwijst naar de images directory in je package root (en als je geen packages gebruikt verwijst hij dus naar de directory waar je classes in staan). Deze URL kun je gebruiken in de ImageIcon constructor. Let er ff op dat als Java je image niet vind dat de URL gewoon null is en hij geen foutmelding geeft...

[edit]

En het werkt ook nog voor JARs :)

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
Op donderdag 20 juni 2002 13:41 schreef Glimi het volgende:

[..]

En / betekend root bij Linux. Probeer gewoon eens even images/image.jpg te callen

Waarom maakt je btw niet gebruik van de separator in File :?
het gebruiken van images/image.jpg had ik ook al geprobeerd, maar zonder succes.

wat bedoel je met het gebruik van de separator in File :?
Op donderdag 20 juni 2002 13:46 schreef websjwans het volgende:
code:
1
URL urltoImage = getClass().getClassLoader().getResource("images/image.png");

[edit]

En het werkt ook nog voor JARs :)
thnx dit deed het hem :)

ik snap alleen nog steeds niet waarom hij vertikt het plaatje te laden door enkel "images/image.jpg" te gebruiken |:(

  • Jelmer
  • Registratie: Maart 2000
  • Nu online
Current-working-directory misschien? ;)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

getClass().getResource() werkt ook :) (scheelt weer een methode :) )

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op vrijdag 21 juni 2002 15:11 schreef wasigh het volgende:
getClass().getResource() werkt ook :) (scheelt weer een methode :) )
Deze vlieger gaat niet op :) Als je gaat werken met jar files dan krijg je dus problemen als je getClassLoader weglaat en kan je bv icoontjes niet meer inladen (hij kan niet bepalen uit welke jar hij moet lezen).

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Op donderdag 20 juni 2002 14:03 schreef CyBoB het volgende:

wat bedoel je met het gebruik van de separator in File :?
Ik denk dit:
http://java.sun.com/j2se/1.4/docs/api/java/io/File.html#separator
(of dit: http://java.sun.com/j2se/1.4/docs/api/java/io/File.html#separatorChar)
Pagina: 1