# JFrame Icon ändern



## Ghosti (18. Jul 2008)

Hallo,

hab ein kleines Problem. Ich will das Icon des Frames ändern und verwende folgenden Code dafür.

Codebeispiel ist direkt von Sun. Lösung für den Icon Bug des Frames!


```
package icon;


import java.awt.*;
import javax.swing.*;


public class ImageIcons extends JFrame
{
  public ImageIcons(boolean showBefore)
  {
    super("TestIcon");
    super.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

    //Image icon = Toolkit.getDefaultToolkit().getImage( "./CD.png" );
    Image icon = new ImageIcon( "CD.png" ).getImage();

    if( showBefore )
    {
      System.out.println("JFrame.setIconImage() ..... FAILED");
      super.show(); //super.setVisible(true)
      super.setIconImage( icon );
    }
    else
    {
      System.out.println("JFrame.setIconImage() ..... WORKS");
      super.setIconImage( icon );
      super.show();
    }
  }
  
  
  public static void main(String[] args)
  {
    //If no commandline option is used. The error will be duplicated.
    //Otherwise, the working option is invoked.
    boolean bln = false;

    ImageIcons f = new ImageIcons(bln);

    // Iconifying frame to show the ICON. This is done since the
    // ICON will not be display in NORMAL state.
    f.setState( JFrame.NORMAL );
  }
  
}
```

Bei Sun in der BugList steht das zuerst das Icon gesetzt werden muss bevor der Frame visible gesetzt wird. Leider wird aber bei mir kein Icon angezeigt. Das Bild befindet sich auch im gleichen Verzeichnis.

Weis einer zufällig warum es nicht angezeigt wird??


----------



## Ghosti (18. Jul 2008)

hab einen kleinen Fehler im code entdeckt. Die letzte CodeZeile müsste

f.setState(JFrame.ICONIFIED);

heißen.

Das Icon wird aber dennoch nicht angezeigt.


----------



## L-ectron-X (18. Jul 2008)

Um das Icon des JFrames zu ändern brauchst du nur die setIconImage(Image icon)-Methode zu benutzen.
Die setzt du vor sichtbar Machen.
Einen weiteren Bug kenne ich nicht.


----------



## Ghosti (18. Jul 2008)

so mach ich das auch, jedoch sieht man das neue Icon nicht. Man sieht garnichts!
Bild befindet sich im gleichen Verzeichnis wie das Class-File



```
//Image icon = Toolkit.getDefaultToolkit().getImage("bild.png");
Image icon = new ImageIcon("bild.png").getImage();

setSize(800,600);
setIconImage(icon);
setVisible(true);
```

Hab es bei Sun nachgelesen, das steht auch deutlich das man zuerst das Icon setzen soll und danach erst das Fenster sichtbar machen.

Jedoch seh ich bei mir das neue Icon nicht. Das Standard-Icon sieht man auch nicht mehr! 

Am L&F kann das aber nicht liegen oder??


----------



## Tobias (18. Jul 2008)

Sicher dass das Bild korrekt geladen wird?

mpG
Tobias


----------



## Ghosti (18. Jul 2008)

Hab es jetzt gelöst, war ein Fehler von mir.

Ich dachte das Bild müsste in dem gleichen Ordner sein wie meine ganzen Gui Klassen.

Hab das Bild jetzt in den Package-Ornder gelegt und siehe da es funktioniert.

Danke euch!!


----------

