it-swarm.com.de

Wie ändere ich das Standardanwendungssymbol in Java?

Ich verwende NetBeans und versuche, das bekannte Java-Kaffeetasse-Symbol in eine PNG-Datei zu ändern, die ich in einem Ressourcenverzeichnis in der JAR-Datei gespeichert habe. Ich habe viele verschiedene Webseiten gefunden, die behaupten, dass sie eine Lösung haben, aber bisher keine funktioniert.

Folgendes habe ich momentan (den Try-Catch-Block weglassen):

URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);

Die Klasse, die diesen Code enthält, befindet sich im Paket com.xyz , falls dies einen Unterschied macht. Diese Klasse erweitert auch JFrame. Dieser Code löst eine MalformedUrlException in der ersten Zeile aus.

Hat jemand eine Lösung, die funktioniert?

60
Bill the Lizard
Java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");

Möglicherweise ist ein "/" am Anfang des Pfads erforderlich.

69
JeeBee

Sie können einfach Netbeans aufrufen, in der Entwurfsansicht zur Eigenschaft JFrame gehen, die Eigenschaft icon image auswählen, die Eigenschaft iconImage des Formulars mit "Benutzerdefinierter Code" festlegen und dann in die Funktion Form.SetIconImage() folgenden Code einfügen: 

Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))

Vergessen Sie nicht zu importieren: 

import Java.awt.Toolkit;

im Quellcode!

13
Ayoub Aneddame

Oder platzieren Sie das Bild relativ zu einer Klasse an einem Ort, und Sie benötigen nicht alle Paket-/Pfadinformationen in der Zeichenfolge selbst.

com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );

Wenn Sie die Klasse in ein anderes Paket verschieben, müssen Sie nicht alle Zeichenfolgen finden. Sie müssen lediglich die Klasse und das Ressourcenverzeichnis verschieben.

4
John Gardner

Versuchen Sie es nach dem Schreiben

initcomponents();

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
4
user2895893
    /** Creates new form Java Program1*/
    public Java Program1() 


    Image im = null;
    try {
    im = ImageIO.read(getClass().getResource("/image location"));
    } catch (IOException ex) {
    Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
    }
    setIconImage(im);

Dies ist, was ich in der GUI in Netbeans verwendet habe und es hat perfekt funktioniert

3
user1456935

Sie sollten Symbole unterschiedlicher Größe definieren, Windows- und Linux-Distributionen wie Ubuntu verwenden unterschiedliche Symbole in der Taskleiste und im Alt-Tab.

public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");

List<Image> images = new ArrayList<>();
try {
    images.add(ImageIO.read(HelperUi.ICON96));
    images.add(ImageIO.read(HelperUi.ICON32));
    images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
    LOGGER.error(e, e);
}

// Define a small and large app icon
this.setIconImages(images);
1
ron190

In einer Klasse, die einen javax.swing.JFrame erweitert, verwenden Sie die Methode setIconImage

this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
1
user2601995

Beispiel:

URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\\Users\\RrezartP\\Documents\\NetBeansProjects\\Inventari\\src\\Gui\\icon\\report-go-icon.png");      
btnReport.setIcon(iChing); 
System.out.println(imageURL);
0

Du kannst dieses versuchen, es funktioniert ganz gut: 

`   ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
    this.setIconImage(icon.getImage());`
0
Mohamed Aharrat

innerhalb des Rahmenkonstruktors

try{    
       setIconImage(ImageIO.read(new File("./images/icon.png")));   
   }
catch (Exception ex){
       //do something
   }
0
Alex S