Jar Datei Frame Icon ändern

Hi!

Probiere nun schon ne Weile mit Netbeans das Standardjavaicon oben links beim Hauptfenster zu ändern. Versuch:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("image.png")));

Wenn das Prog direkt in Netbeans ausgeführt wird, klappts! Erstellt man jedoch mit „Rechte Maustaste aufs Projekt > Clean and Build“ eine jar Datei und versucht diese auszuführen, passiert gar nichts. Auch in der Kommandozeile mit java -jar prog.jar kommt keine Fehlermeldung und gar nichts :confused:

try {
    BufferedImage image = ImageIO.read(getClass().getResource("icon.png"));
    frame.setIconImage(image);
} catch (IOException e) {}

Das funktioniert bei mir…
Vielleicht liegts an deiner Art das Bild einzulesen…

Bist du dir sicher dass die jar das Bild enthaelt? Entpack die mal mit winrar oder so

Das kann man alles klären, wenn im catch-Block die geworfene Exception nicht verschluckt wird.
Das ist aber aus dem Code des TO leider nicht und im Code von @IDC falsch gemacht worden.

Schande über mein Haupt :wink:

    BufferedImage image = ImageIO.read(getClass().getResource("icon.png"));
    frame.setIconImage(image);
} catch (IOException e) {
    e.printStackTrace();
}```

[quote=L-ectron-X]Das kann man alles klären, wenn im catch-Block die geworfene Exception nicht verschluckt wird.
Das ist aber aus dem Code des TO leider nicht und im Code von @IDC falsch gemacht worden.[/quote]

hmm - wir brauchen unter dem Usernamen noch eine Messlatte für „Ernsthafte Verfehlungen am Quellcode“

Hast du s denn jetzt mal mit imageio probiert?

Entweder er hat das Problem schon geloest oder er hat sich verlaufen o.O

Gutes Forum! :slight_smile: Hat leider noch nicht geklappt. Versucht wurde:
Extra ein nur dafür neues frisches Projekt angelegt und alles auf Standard gelassen(hoffe das ist erstmal okay Namen sind vielleicht etwas unpassend)
Schritt 1: File > New Project > Java > Java Application > Project Name: JavaApplication10(Häckchen bei Create Main Class war aktiviert) > Finish
Schritt 2: File New File > Swing GUI Forms > JFrame Form > Class Name: NewJFrame > Finish
Schritt 3: icon.png mit Drag & Drop in Netbeans Paket javaapplication10 ziehen(damit wurde icon.png wohl automatisch auch gleichzeitig in den Ordner /…/NetBeansProjects/JavaApplication10/src/javaapplication10/icon.png kopiert
Schritt 3: Code von IDC ausprobieren (sorry komme mit der Formatierung nicht klar)

Java Code:

[ol]
[li]package javaapplication10;[/li][li]import java.awt.image.BufferedImage;[/li][li]import java.io.IOException;[/li][li]import javax.imageio.ImageIO;[/li][li]/[/li][li]* * To change this license header, choose License Headers in Project Properties.[/li][li] * To change this template file, choose Tools | Templates**[/li][li]** * and open the template in the editor.[/li][li] /**[/li][li]/[/li][li]* [/li][li] * @author author***[/li][li]**** /[/li][li]public class NewJFrame extends javax.swing.JFrame {[/li][li] **** /[/li][li]* * Creates new form NewJFrame****[/li][li]**** /***[/li][li] ** public** NewJFrame() {[/li][li] initComponents();[/li][li] ** try** {[/li][li] BufferedImage image = ImageIO.read(getClass().getResource(„icon.png“))[/li][li] // Pfad „/javaapplication10/icon.png“ auch probiert [/li][li] setIconImage(image);[/li][li] } catch (IOException e) {[/li][li] e.printStackTrace();[/li][li] }[/li][li] }[/li][li] …[/li][li]}[/li][/ol]

Bist du dir sicher dass die jar das Bild enthaelt?

Schritt 4: Nachdem die jar Datei erstellt wurde (BUILD SUCCESSFUL (total time: 0 seconds)) (JavaApplication10.jar) mal reingeschaut. 2 Ordner enthalten: javaapplication10 und META-INF, der erste Ordner wiederum enthält icon.png, JavaApplication10.class, NewJFrame.class,NewJFrame$1.classn :ka:

Habt ihr vielleicht eine Idee?

Scheint alles zu stimmen… Komisch

gut statt (frame.setIconImage(image) steht im mom nur setIconImage(image) wusste nicht wie das frame heißt aber obs daran liegen könnte…

Das Frame heißt “this” und das darf man weglassen… Du erbst schon vom Frame, was man aus mir unbekannten Gründen nur in Ausnahmefällen machen sollte, deswegen musst du das nicht dazu schreiben!

Teste gerade mal deinen Code:
Da fehlt ein Semikolon am Ende der BufferedImage Zeile…
Und (nach einem bei dir wohl hoffentlich in initComponents() vorhandenen) setVisible(true); funktioniert alles!

Komisch, Komisch

NetBeans… Design Ansicht, Properties von deinem Frame, so ziemlich in der Mitte steht “IconImage” und da CustomCode ->

setIconImage(new ImageIcon(getClass().getResource("/path/to/picture.png")).getImage());```

Und da wir die Frage schonmal hatten, mal gleich die Folgefrage beantworten (falls sie mal kommen sollte): die Pfadangabe fängt im /src Verzeichnis deines Projektes an, also z.B.
/home/LOGIN/benutzername/projekte/MeinProjekt/src[U]/path/to/picture.png[/U]

Danke an alle Problem gelöst, wens interessiert, es war alles richtig soweit was hier geschrieben wurde, nur war in den Projekteigenschaften unter ‘Run’ die falsche main class ausgewählt, deshalb passierte auch nichts ^^