Anzeige:
Ergebnis 1 bis 12 von 12

Thema: java: bilder aus jar-file einlesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37

    java: bilder aus jar-file einlesen

    wie kann ich ein bild aus einem jar-file auslesen und auf einen button legen?
    Code:
    Image img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("new.gif"));
    JButton newButton = new JButton(new ImageIcon(img));
    gibt eine herrliche nullpointer-exception...
    das bild befindet sich im jar-file, worin auch die klasse untergebracht ist.

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ich hab das so gemacht:
    Code:
    JLabel imageLabel = new JLabel();
            try {
                //System.out.println(ClassLoader.getSystemResource("logo.png").toString());
                imageLabel.setIcon(new ImageIcon(ClassLoader.getSystemResource(
                            "logo.png")));
            } catch (Exception ex) {
                System.err.println(ex.getMessage());
            }
    Bei Dir ist das halt ein Button und kein Label, aber sonst sollte es klappen. Ich hab ziemlich lange nachgeforscht um das rauszufinden...
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37
    hallo
    das war ja nun frustrierend... seit über vier stunden habe ich an dem sch**** rumgebastelt. na ja, endlich geschafft. danke!
    Geändert von neonknight (26-03-2003 um 16:14 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37
    gehen wir doch mal ein stückchen weiter...

    theoretisch müsste das ja auch mit einem textfile gehen.

    ClassLoader.getSystemResource("text.txt")
    liefert eine url zurück. wie kann ich das nun den inhalt der datei als string auslesen?

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    getResourceAsStream denke ich mal.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37
    non-static method getResourceAsStream(java.lang.String) cannot be referenced from a static context

    was heisst das für mich? was muss ich hier ändern?

    Code:
    InputStream is = ClassLoader.getResourceAsStream("text.txt");

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, du brauchst eine ClassLoader Instanz.

    Versuch es mal mit
    Code:
    ClassLoader loader = ClassLoader.getSystemClassLoader();
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37
    ich habs geschafft, allerdings habe ich es ganz anders gelöst:

    Code:
    URL url = ClassLoader.getSystemResource("text.txt");
            String s = "";
            try{
                BufferedReader input = new BufferedReader( new InputStreamReader(url.openStream()));
                String line;
                while ((line = input.readLine()) != null){ 
                    s = s + line + "\n";
                } 
                input.close();
            } catch(Exception e){ System.out.println(e); }
    keine ahnung, wie das von der performance ist, aber es läuft *g*
    Geändert von neonknight (28-03-2003 um 21:44 Uhr)

  9. #9
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    hmm und wenn ich die Textdatei in einer anderen jar habe?
    I haven't lost my mind - It's somewhere on a backup-disc

  10. #10
    Registrierter Benutzer
    Registriert seit
    23.02.2003
    Ort
    schweiz
    Beiträge
    37
    dann musst du die url des anderen jar-files ausfindig machen...

    URL url = ClassLoader.getSystemResource("text.txt");
    gibt die url des text.txt-files im gesamtsystem wieder.

  11. #11
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ich hab jetzt ein bissel gebastelt, komme aber nicht drauf.
    Diese jar liegt im gleichen Verzeichnis wie die, die das Programm beinhaltet.
    Ich hab also Programm.jar und Daten.jar. Wie finde ich im Programm.jar die Daten.jar, damit ich auf deren Inhalt zugreifen kann?
    I haven't lost my mind - It's somewhere on a backup-disc

  12. #12
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ich habs. Einfach weg von dem Ressource-Kram:

    Code:
           try {
                this.jar = new JarFile("Data.jar");
                this.entry = new ZipEntry(jar.getEntry("text.txt"));
    
                this.input = new BufferedReader(new InputStreamReader(
                            jar.getInputStream(entry)));
    
                while ((zeile = input.readLine()) != null) {
                    System.out.println(zeile);
                }
    
                input.close();
            } catch (IOException io) {
                System.err.println("Data.jar nicht gefunden " + io.getMessage());
            }
    Das klappt aber nur, wenn ich die Programm.jar von der Konsole starte und mich im Verzeichnis befinde, wo die beiden jars liegen; ansonsten findet er sie nicht *grr*
    Wie kriege ich das denn jetzt hin? Bei Applets gibts die Methode getCodeBase() für sowas, aber wie geht das bei ner Applikation?
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •