Swing 2 ImageIcons (setImagIcons()?)

beastofchaos

Bekanntes Mitglied
Hallo Java-Crew,
Ich möchte gerne meinem JFrame ein Icon verschaffen. War schnell mit setImageIcon() bewältigt und sieht ganz ok aus, aber jetzt frage ich mich, wie ich es hinbekomme, dass in der Symbolleiste ein anderes Icon angezeigt wird, als im Fenster oben links. Ich dachte, ich könnte das über setImageIcons einbauen, aber ich habe noch keine Instruktion dazu gefunden und ausprobieren wird, glaub ich, auch nichts bringen.
Ich hab noch die Idee, dass für das Icon in der Symbolleiste ja nicht unbedingt auf das JFrame gegriffen wird. Vll. enthält "System" oder eine andere Klasse die entsprechende Methode, um das Icon der Application und nicht des JFrames zu ändern.

Gruß, Thomas
 

beastofchaos

Bekanntes Mitglied
Ne, wenn du ein Programm öffnest, dann wird das auch in der Windowleiste angezeigt. Beispiel: wenn du Eclipse öffnest, siehst du oben links ein anderes Symbol als unten in der Leiste. Im Anhang ein Bild davon ;)

Gruß, Thomas
 

Anhänge

  • Eclipse.jpg
    Eclipse.jpg
    75,9 KB · Aufrufe: 42

beastofchaos

Bekanntes Mitglied
@bERt0r:
Kennst du nicht solche Momente, wo dir das richtige Wort fehlt? Aber danke fürs Erinnern :p

@thE_29:
Den kann ich dir empfehlen -> Augenarzt Berlin
Okay, der war gemein. Sorry :D

Aber Unten in der SYMBOLLEISTE (^-^) steht "Java EE IDE". Oben Links im Fenster ist nur das Rad (bevor bErT0r was sagt, es ist eine "Mutter";) ).

Gruß, Thomas
 

Fu3L

Top Contributor
Ein gekonnter Blick in die API ;)

setIconImages

public void setIconImages(List<? extends Image> icons)

Sets the sequence of images to be displayed as the icon for this window. Subsequent calls to getIconImages will always return a copy of the icons list.

Depending on the platform capabilities one or several images of different dimensions will be used as the window's icon.

The icons list is scanned for the images of most appropriate dimensions from the beginning. If the list contains several images of the same size, the first will be used.

Ownerless windows with no icon specified use platfrom-default icon. The icon of an owned window may be inherited from the owner unless explicitly overridden. Setting the icon to null or empty list restores the default behavior.

Note : Native windowing systems may use different images of differing dimensions to represent a window, depending on the context (e.g. window decoration, window list, taskbar, etc.). They could also use just a single image for all contexts or no image at all.
 

beastofchaos

Bekanntes Mitglied
Wenn ich es richtig verstehe, heißt das, dass er sich immer das passendste aus der Liste sucht. Also passend im Sinne von Dimension. Der einzige Sinn dafür? Ich werds einfach demnächst mal ausprobieren :p
Und ja, ich hab auch schon reingeschaut, aber ich bin nciht so gut in englisch und ein bisschen zu bequem zum übersetzen XD


Gruß, Thomas
 

Fu3L

Top Contributor
Jopp, das heißt es: Wenn du ein kleines und ein großes übergibst, dann nimmt der das kleine als Fenstertitelsymbol und das große in der Taskleiste. Oder er nimmt einfach nur eins von beiden oder gar keins^^ So wies dem Betriebssystem gefällt. So steht es dort drin (wenn ich es richtig interpretiere ;))
 

beastofchaos

Bekanntes Mitglied
Hab jetzt ewig mit den Größen rumgespielt, aber:
Die ungefähren Verhältnis(Breite : Höhe), die (zumindest)Windows so will, sind für das Fenstericon 250:200 und für das Icon in der Taskleiste ist es 384:346. Größe spielen keine Rolle, sondern nur das Verhältnis.
Achtung:
Wenn das zweite Bild(im letzten Satz zu letzt genannt) nun ein bisschen größer(in der Höhe) ist, wird das Icon für Fenster und Taskleiste übernommen.
Andersrum: Wenn es ein Tick kleiner(in der Höhe) ist, wird das andere Icon für beide Stellen benutzt.

Gruß, Thomas

edit: hier noch mein Quelltext als Beispiel:

Java:
        ArrayList<Image> list = new ArrayList<Image>();
        list.add(new ImageIcon(getClass().getResource("/images/icon_Short.png")).getImage()); //FensterIcon (250:200)
        list.add(new ImageIcon(getClass().getResource("/images/icon_Middle.png")).getImage()); // TaskleisteIcon (384:346)
        setIconImages( list);
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben