Avatar billede jgthb Nybegynder
28. december 2008 - 18:56 Der er 7 kommentarer og
1 løsning

ikon til applikation

Hejsa

Jeg vil gerne have, at min applikation har et ikon. Lige nu bruger jeg følgende kode:

import java.awt.*;
...
this.setIconImage(Toolkit.getDefaultToolkit().getImage("firkant.png"));

og har så billedfilen i projektroden (og har også tidligere haft den i dist-mappen).

Når jeg kører programmet fra NetBeans, virker det fint, men når jeg kører jar-filen, vises blot det sædvanlige java-logo.

Gør jeg noget forkert?

Tusind tak på forhånd
Mvh Jonathan
Avatar billede arne_v Ekspert
28. december 2008 - 21:29 #1
Jeg tror at imaget skal hentes som resource fra jar filen.
Avatar billede arne_v Ekspert
28. december 2008 - 21:30 #2
Utestet:

this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("firkant.png")));
Avatar billede arne_v Ekspert
28. december 2008 - 21:31 #3
med firkant.jpg i roden af jar
Avatar billede arne_v Ekspert
28. december 2008 - 21:56 #4
Følgende testet som virkende her:

import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class CustomIcon extends JFrame {
    public CustomIcon() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Demo");
        //setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\bluedot.png"));
        setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("bluedot.png")));
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new CustomIcon();
                f.setVisible(true);
            }
        });
    }
}
Avatar billede jgthb Nybegynder
28. december 2008 - 22:31 #5
hmmm, godt nok benyttes der "java.awt.EventQueue.invokeLater" i stedet for "SwingUtilities.invokeLater" i min kode, men ellers synes jeg mit minder utroligt meget om dit, og alligevel får jeg fejl. Kan lige vise et uddrag af koden samt fejlmeddelelse her. Håber du vil se på det.

Fejlmeddelelse:
run:
Uncaught error fetching image:
java.lang.NullPointerException
        at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
        at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
BUILD STOPPED (total time: 10 seconds)


----------------------------------------------------------------------------------

uddrag af programkode:

package firkantPakke;

import java.awt.*;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

/**
*
* @author Ejer
*/
public class FirkantGUI extends javax.swing.JFrame {

    private int spillerunde = 1;
    private int spillertur = 1;
    private String spiller1tekst;
    private String spiller2tekst;
    private String spiller3tekst;
    private boolean pointAngivet = false;
    private boolean spilAngivet = false;

    /** Creates new form FirkantGUI */
    public FirkantGUI() {
        initComponents();

        this.setSize(561, 525);
        this.setLocationRelativeTo(null);     
        //this.setIconImage(Toolkit.getDefaultToolkit().getImage("firkant.png"));
        this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("firkant.png")));

        spiller1tekst = spiller1TextField.getText();
        spiller2tekst = spiller2TextField.getText();
        spiller3tekst = spiller3TextField.getText();
        fane1TabbedPane.setEnabledAt(0, false);
        fane1TabbedPane.setEnabledAt(1, false);
    }

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FirkantGUI().setVisible(true);
            }
        });
    }
Avatar billede arne_v Ekspert
28. december 2008 - 22:46 #6
Ligger firkant.jpg i din classpath ?

D.v.s. i roden af en jar eller et dir som er i classpath ?
Avatar billede jgthb Nybegynder
28. december 2008 - 23:05 #7
nu ligger den i mappen src\firkantPakke, og det virker!

tusind tak for hjælpen. du lægger bare et svar
Avatar billede arne_v Ekspert
28. december 2008 - 23:09 #8
svar
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