TrayIcon in Windows 7 unscharf

watchman

Mitglied
Hallo,

ich habe Java SE 6 und Windows 7. Wenn ich ein neues Icon in die Systemtray (siehe code) stellen, dann erscheint dieses Icon unscharf.

Java:
   Image icon = new ImageIcon(Main.class.getResource("myIcon20x20px.png")).getImage();

        final TrayIcon trayIcon = new TrayIcon(icon, Application.APPLICATION_NAME);

        trayIcon.setImageAutoSize(true); // mit false wird es auch nicht schärfer
        final SystemTray tray = SystemTray.getSystemTray();

 try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            return;
        }

Wie schafft man es ein "scharfes" Icon in die Systemtray zu stellen? Ich habe schon alle möglichen Größen versucht: 16x16, 20x20, ... Pixel.

Java:
  final SystemTray tray = SystemTray.getSystemTray();
        System.out.println(tray.getTrayIconSize());
leifert:
java.awt.Dimension[width=16,height=16]

Wenn ich mir die Icons ins mspaint über screenshot anschaue, dann haben die Windows-icons eine Größe von 20x20 Pixel.

Hat jemand eine Idee? Muss man vielleicht ein anderes Bildfomat nehmen?

Gruß
 
T

Tomate_Salat

Gast
Screenshots von: Soll-Status und Ist-Status wäre hier sicherlich interessant ;-)

aber anderes Format...du könntest mal das .ico Format verwenden. Zum erstellen solcher kannst du icoFx nehmen. (Gimp kann das glaube ich auch)

MFG

Tomate_Salat
 

r.w.

Bekanntes Mitglied
Java:
   trayIcon.setImageAutoSize(true); // mit false wird es auch nicht schärfer

Was Windows genau macht, wenn diese Eigenschaft auf "false" gesetzt wird, weiss ich nicht.
Aber ein "true" an dieser Stelle ist Grund dafür, dass das Icon unscharf dargestellt wird, wenn es nicht 16x16Px gross ist. ;-)
Beim Verkleinern ist eine gewisse Unschärfe nicht zu vermeiden.

Ich hab es soeben noch einmal mit einem 16x16Px-PNG versucht und es wird korrekt (scharf) dargestellt.
Sogar transparente Pixel werden so unterstützt.

VG r.w.
 

watchman

Mitglied
Java:
public class TrayIconMain {

    public static void main(String[] args) {

        URL url = TrayIconMain.class.getResource("1616px.png");
        Image icon = new ImageIcon(url).getImage();

        TrayIcon trayIcon = new TrayIcon(icon);
        trayIcon.setImageAutoSize(false);
        
        try {
            SystemTray.getSystemTray().add(trayIcon);
        } catch (AWTException ex) {
            Logger.getLogger(TrayIconMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Ich habe jetzt ein 16x16 Pixel großes png mit mspaint erstellt. Ob setImageAutoSize(false) oder setImageAutoSize(true) egal. Gleiches Ergebnis, siehe trayicon.png im Anhang. Links im Screenshot ist zu sehen wie das Bild im Original aussieht. Im der Systemtray sieht man, dass die Abstände des Bild nicht mehr stimmen. Damit ist das Bild "unscharf" bzw. verzerrt. Es ist auch 20x20 Pixel groß und nicht 16x16. Damit wurdert es micht nicht dass es verzerrt ist. Wenn ich ein 20x20 Bild lade, dann ist dieses Bild auch verzerrt?

Ich hab es soeben noch einmal mit einem 16x16Px-PNG versucht und es wird korrekt (scharf) dargestellt.

Hast du auch Windows 7?
 

Anhänge

  • trayicon.png
    trayicon.png
    21,9 KB · Aufrufe: 80
  • 1616px.png
    1616px.png
    151 Bytes · Aufrufe: 101
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
ist nur gestreckt, wenn ich mich bei den kleinen abständen nicht verzählt habe, haben beide 6 linien. Wird eben nur "seltsam" vergrößert. Versuche es doch mit einer Ico-Lib. Kannste mit icoFx erstellen. Du erstellst von deinem Png verschiedene Größenversionen(z.B: 16x16, 20x20, 25x25, 32x32, 48x48) und speicherst alles als .ico ab. Das System sollte sich dann selbst die bestpassendste größe heraussuchen.
 

r.w.

Bekanntes Mitglied
Also ich hab es jetzt noch mal mit dem von Dir hochgeladenen Icon und diesem Code probiert:

Java:
        try {
            Image bi = new ImageIcon("trayicon.png").getImage();
            TrayIcon ti = new TrayIcon(bi);
            SystemTray st = SystemTray.getSystemTray();
            st.add(ti);
            Thread.sleep(5000);
            st.remove(ti);
        } catch (AWTException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

Das funktioniert hier bei mir unter Window7 perfekt, wie der Anhang zeigt.
 

Anhänge

  • win7_tray.png
    win7_tray.png
    5,8 KB · Aufrufe: 97

watchman

Mitglied
Jetzt konnte ich das auch reproduzieren. Es hängt an den Windows-Einstellungen:
Anzeige/Die Lesbarkeit auf dem Bildschirm erleichtern/
[ ] Kleiner 100% (Standard)
[x] Mittel 125%
Wenn ich auf 100% umstelle, dann sind in der Systemtray alle Symbole 16x16 groß und mein png wird auch richtig dargestellt. Wenn ich auf 125% stelle sind die Symbole 20x20 groß und mein png wird verzerrt dargestellt. Die Windows icons sehen aber immer noch vernünftig aus. Entwerde die haben Glück oder da geht noch mehr.

Gut - jetzt wissen wir woran es hängt.
:applaus: @r.w. Danke für den screenshot... @Tomate_Salat Danke für den icoFx Link, cooles Tool.

Mich würde jetzt nur interessieren wie ich es auch hinbekomme, dass es bei 125% scharf dargestellt wird?

Ich habe icoFX installiert und ein ico mit verschiedenen größen erstellt. Wenn ich aber den Konstruktor vom TrayIcon mit ico aufrufen dann sieht man gar kein Bild. Habe mir auch ein ico mit verschieden Größen aus dem Internet geladen.
 

KrokoDiehl

Top Contributor
Wenn du mit
Code:
tray.getTrayIconSize()
die Größe des Tray-Symbols herausfinden kannst, kannst du deine Grafik selbst skalieren, dann muss Windows das nicht mehr tun.
Oder liefert das immer 16x16 zurück?
 

watchman

Mitglied
tray.getTrayIconSize() liefert bei mir immer 16x16 zurück. Auch wenn ich 20x20 bilder lade, werden sie verzerrt, auch mit setImageAutoSize(false) oder setImageAutoSize(true).
Also ich habe vieles ausprobiert. Viele Format, Größen. Es ist nicht hinzubekommen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Problem mit TrayIcon unter Windows/Linux AWT, Swing, JavaFX & SWT 7
S Swing TrayIcon bei Systemdienst (Windows, Systemuser) AWT, Swing, JavaFX & SWT 7
hdi Workaround: TrayIcon & JPopupMenu AWT, Swing, JavaFX & SWT 3
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
N TrayIcon.displayMessage tonlos aufpoppen AWT, Swing, JavaFX & SWT 4
W TrayIcon mit jdic (Problem bei .jar Datei) AWT, Swing, JavaFX & SWT 3
DStrohma Bild für TrayIcon skalieren AWT, Swing, JavaFX & SWT 13
D TrayIcon AWT, Swing, JavaFX & SWT 3
D Trayicon AWT, Swing, JavaFX & SWT 11
T AWT AWT TrayIcon in Ubuntu AWT, Swing, JavaFX & SWT 19
I TrayIcon aber bitte nur einmal AWT, Swing, JavaFX & SWT 2
B trayicon will nit AWT, Swing, JavaFX & SWT 7
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
Avarion Swing JFrame unter Windows 10 kleiner ?! AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
S Swing Automatisch 2px Rahmen in Windows 8 AWT, Swing, JavaFX & SWT 0
A Swing JProgressbar im Windows Look & Feel Farbanpassung AWT, Swing, JavaFX & SWT 2
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Windows Fenster in einem Programm AWT, Swing, JavaFX & SWT 2
morphesus AWT Windows 7 Aero Look AWT, Swing, JavaFX & SWT 2
H Fenstergröße bei Mac und Windows gleich einstellen? AWT, Swing, JavaFX & SWT 3
B Windows Look and Feel AWT, Swing, JavaFX & SWT 2
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
S GUI aussehen unter Windows und Linux (und Mac) AWT, Swing, JavaFX & SWT 13
N Swing von Windows zu Ubuntu AWT, Swing, JavaFX & SWT 3
S Swing Threads Windows 7 64 bit AWT, Swing, JavaFX & SWT 12
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
A Swing Probleme unter Windows 7 AWT, Swing, JavaFX & SWT 5
Dragonfire Swing UTF-8 BOB Probleme mit Windows Look and Feel AWT, Swing, JavaFX & SWT 4
J Applet Linux(-(k)ubuntu-)-Firefox-Java-Plugin - Fensterschließprobleme die bei Windows so nicht auftreten AWT, Swing, JavaFX & SWT 4
F AWT MouseMotionListener e.getButton() ist immer 0 unter Linux und Windows AWT, Swing, JavaFX & SWT 6
E Implementierung des Windows Rechners? AWT, Swing, JavaFX & SWT 7
O AWT Shaped, Translucent Windows AWT, Swing, JavaFX & SWT 14
LittleJavaCup Suchmaschine programmieren (wie bei Windows) AWT, Swing, JavaFX & SWT 2
R Windows-Dateien auf GUI ziehen AWT, Swing, JavaFX & SWT 3
G Quaqua unter Windows AWT, Swing, JavaFX & SWT 15
S LookAndFeel Look and Feel mit Windows funktioniert nicht AWT, Swing, JavaFX & SWT 8
G Windows XP layout herausfinden AWT, Swing, JavaFX & SWT 7
J Java & Windows-7-Taskbar AWT, Swing, JavaFX & SWT 13
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
L JPanel mit Objekten selektieren wie unter Windows / Ubuntu AWT, Swing, JavaFX & SWT 4
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
M Fenster Windows-Like anordnen AWT, Swing, JavaFX & SWT 2
B Swing Windows Shortcuts ersetzen AWT, Swing, JavaFX & SWT 9
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
G JFrame und Windows Vista? AWT, Swing, JavaFX & SWT 4
G JFrame in Windows? AWT, Swing, JavaFX & SWT 4
D Transperency of Windows AWT, Swing, JavaFX & SWT 7
P SWT, Windows 2000, GDI+ und Microsoft Redistributable AWT, Swing, JavaFX & SWT 3
N Modale Windows AWT, Swing, JavaFX & SWT 2
G windows look and feel problem AWT, Swing, JavaFX & SWT 7
S KeyEvents in Linux und Windows AWT, Swing, JavaFX & SWT 14
M Globale Events in Windows abfangen AWT, Swing, JavaFX & SWT 2
M Windows-Applikationen minimieren AWT, Swing, JavaFX & SWT 4
G Windows Vista Gadget AWT, Swing, JavaFX & SWT 5
T SWT - Wie Windows erstelltes .jar auf einem MAC ausführen? AWT, Swing, JavaFX & SWT 25
M Windows-Fensterinhalt in Java-Applikation darstellen AWT, Swing, JavaFX & SWT 6
G Windows Taste in KeyEvent? AWT, Swing, JavaFX & SWT 4
P SWT - "Combo" aus dem Windows-FileDialog AWT, Swing, JavaFX & SWT 3
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
K Windows Style als standard? AWT, Swing, JavaFX & SWT 2
S Bei SWT den Windows beenden Button manipulieren? AWT, Swing, JavaFX & SWT 4
T JGoodies unter Windows 98 AWT, Swing, JavaFX & SWT 4
F AWT Programm unter Linux anders als unter Windows ! AWT, Swing, JavaFX & SWT 8
N SWT: GUI Windows Events AWT, Swing, JavaFX & SWT 8
P Swing-Komponenten - Standart-Windows Design? AWT, Swing, JavaFX & SWT 4
I Windows LaF verbessern? AWT, Swing, JavaFX & SWT 12
F Schriftarten unter Windows und Linux AWT, Swing, JavaFX & SWT 6
T Windows-Typisches Menü für Swing AWT, Swing, JavaFX & SWT 3
G Windows LookAndFeel - Classpath AWT, Swing, JavaFX & SWT 6
M Windows file icons in Java verwenden AWT, Swing, JavaFX & SWT 2
TheJavaKid Windows 98 LaF AWT, Swing, JavaFX & SWT 4
G standard blau (windows) != color.blue AWT, Swing, JavaFX & SWT 2
G JTable wird im Windows Look&Feel nicht gedruckt AWT, Swing, JavaFX & SWT 5
B Komische Darstellung unter Windows 2000 AWT, Swing, JavaFX & SWT 2
W Problem mit Fensteranzeige in Windows AWT, Swing, JavaFX & SWT 3
O Windows Lautstärke regeln wie? AWT, Swing, JavaFX & SWT 23
C Java Programm wie Windows Taskleiste AWT, Swing, JavaFX & SWT 2
P Garfikfehler unter Windows 2000 AWT, Swing, JavaFX & SWT 3
T Programm gleich wie Windows Media Player in den Task geben AWT, Swing, JavaFX & SWT 10
H Wie bastelt man eine Baumstruktur wie im Windows-Explorer? AWT, Swing, JavaFX & SWT 5
A Probleme mit Windows Style (Background) AWT, Swing, JavaFX & SWT 4
javasdann JTable Kopfzeile in Windows Look&Feel unschön. AWT, Swing, JavaFX & SWT 3
L windows explorer AWT, Swing, JavaFX & SWT 4
O SWT-Anwendung für Windows und Linux verteilen AWT, Swing, JavaFX & SWT 3
B JTree + Linien im Windows L&F AWT, Swing, JavaFX & SWT 9
T Das Windows Fenster "Öffnen" mit Java darstellen AWT, Swing, JavaFX & SWT 9
V Windows Look für JTree? AWT, Swing, JavaFX & SWT 3
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben