Les tailles des icônes de cadre utilisées dans la balançoire

nous pouvons utiliser une liste pour initialiser les icônes de fenêtre en utilisant Window.setIconImages(List<? extends Image>) . Quelles sont les différentes tailles d'icônes généralement utilisé dans un JFrame ?

Code

ce code transforme 64 images de tailles différentes (de 16x16, incrémentant de 2) en icônes pour la liste.

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class FrameIconList {

    public static BufferedImage getImage(int size, Color color) {
        BufferedImage i = new BufferedImage(
                size, size, BufferedImage.TYPE_INT_RGB);

        Graphics2D g = i.createGraphics();

        g.setColor(color);
        g.fillRect(0, 0, size, size);
        g.setColor(Color.BLACK);
        int off = (size>17 ? 3 : 1);
        if (off>1) g.drawRect(0, 0, size-1, size-1);
        g.drawString("" + size, off, size-off);

        g.dispose();

        return i;
    }

    public static void main(String[] args) {
        final Color[] colors = {
            Color.GREEN,
            Color.RED,
            Color.YELLOW,
            Color.WHITE,
            Color.CYAN,
            Color.MAGENTA,
            Color.PINK,
            Color.ORANGE
        };

        int s = 64;
        final int[] sizes = new int[s];

        for (int ii=0; ii<sizes.length; ii++) {
            sizes[ii] = 16+(ii*2);
        }

        Runnable r = new Runnable() {

            @Override
            public void run() {
                // the GUI as seen by the user (without frame)
                JPanel gui = new JPanel(new BorderLayout());
                gui.setBorder(new EmptyBorder(2, 3, 2, 3));
                gui.setBackground(Color.WHITE);

                ArrayList<BufferedImage> images = new ArrayList<BufferedImage>();
                Vector<ImageIcon> icons = new Vector<ImageIcon>();
                for (int ii=0; ii< sizes.length; ii++) {
                    BufferedImage bi = getImage(
                            sizes[ii], 
                            colors[ii%colors.length]);
                    images.add(bi);
                    ImageIcon imi = new ImageIcon(bi);
                    icons.add(imi);
                }
                JList list = new JList(icons);
                list.setVisibleRowCount(6);
                gui.add(new JScrollPane(list));

                JFrame f = new JFrame("Icon size usage");
                f.setIconImages(images);
                f.add(gui);
                // Ensures JVM closes after frame(s) closed and
                // all non-daemon threads are finished
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                // See http://stackoverflow.com/a/7143398/418556 for demo.
                f.setLocationByPlatform(true);

                // ensures the frame is the minimum size it needs to be
                // in order display the components within it
                f.pack();
                // should be done last, to avoid flickering, moving,
                // resizing artifacts.
                f.setVisible(true);
            }
        };
        // Swing GUIs should be created and updated on the EDT
        // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    }
}
26
demandé sur Andrew Thompson 2013-08-14 09:56:52

5 réponses

vues typiques pour ce PC basé sur Windows 7

Note: @bobbel rapporte que les mêmes tailles sont utilisées pour Windows 10.

Cadre 20x20

Icon Size Usage - showing 20x20 frame icon

barre des tâches-40x40 dans la barre des tâches elle-même, l'application de vol stationnaire montre 20x20

Icon Size Usage - Task Bar

Windows + Tab-20x20

Icon Size Usage - Windows+Tab

Alt+Tab-40x40 en bas à droite, réduit 20x20 en haut à gauche.

Icon Size Usage - Alt+Tab

Gestionnaire des Tâches - 20x20

Icon Size Usage - Task Manager

28
répondu Andrew Thompson 2015-12-07 03:27:52

@mKorbel Huh.. ne savais pas qu'il y aurait une différence. Eh bien, les préférences de l'utilisateur/OS règnent sur les attentes du programmeur! ;)

  • la réponse ne concerne que Win8(ent, 64b ....) / WinXP (non mentionné, mais les paramètres sont assez similaires)

  • il y a une autre option s'il vous plaît voir Bug ou fonction: Swing font gui par défaut incorrecte pour Win6+ par @kleopatra, etc

  • est possible de définir l'icône 64x64 sur le bureau dans win8

  • e.g. mon réglage (pas de personnalisations graphiques avancées, malgré le fait que je suis Win2008 / 12 admin, blablabla- "laissant suréalisme avec le schéma couleur inversée, maintenant seulement avec les couleurs Noir Et Orange" -end blablabla )

enter image description here

  • génération

enter image description here

  • réglage standard (seulement banalisé l'Utilisation de petits boutons de barre des tâches)

enter image description here

  • votre fenêtre sur mon écran

enter image description here

12
répondu mKorbel 2017-05-23 12:31:59

il semble qu'il n'y ait pas d'icônes de cadre ou de Dock lorsque vous utilisez Mac OS X 10.9 (Mavericks):

Lack of Java Swing icons in Mac OS X 10.9 (Mavericks)

également, pas d'icône dans le moniteur D'activité:

enter image description here

11
répondu EthanB 2014-02-21 21:18:57

Ubuntu 12.04 LTS

la taille de l'icône de la barre des tâches peut être changée entre 32 et 64, mais tout le temps utilise l'icône 32x32. J'ai aussi recompilé le programme, mais continue d'utiliser le même icône.

barre des tâches et fenêtre (il n'y a pas d'icône à windows).

enter image description here

Alt + Tab

enter image description here

pas d'icône au Gestionnaire des tâches

10
répondu blackløtus 2014-02-22 22:43:43

J'ai découvert une chose intéressante sur Win10 (pourrait être aussi vrai pour Win7 et Win8, mais je ne l'ai pas encore essayé).

par défaut, Win10 utilisera des tailles d'image de 20x20 (petite) et 40x40 (grande).

alors, que faire si vous laissez démarrer vos tailles d'image à 22 ? Il utilisera des tailles d'image 30x30 (petit) et 40x40 (grand)!

générant une table entière de celui-ci montre des comportements intéressants (les tests entre les tailles de départ testé donnent des tailles précédentes; donc 4 donnera aussi 20x20 et 40x40 ):

si vous commencez à 2 , il utilisera 20x20 et 40x40 .

Si vous commencez à 22 , il utilisera 30x30 et 40x40 .

Si vous commencez à 32 , il utilisera à la fois 40x40 .

Si vous commencez à 42 , il utilisera à la fois 60x60 .

Si vous commencez à 62 , il utilisera 78x78 et 80x80 .

Si vous commencez à 80 , il utilisera pour les deux 80x80 .

Si vous commencez à 82 , il utilisera 98x98 et 120x120 .

Si vous commencez à 100 , il utilisera 100x100 et 120x120 .

Si vous commencez à 102 , il utilisera 118x118 et 120x120 .

Si vous commencez à 120 , il utilisera à la fois 120x120 .

Si vous commencez à 122 , il utilisera 138x138 et 158x158 .

... bon c'est assez ...

Je ne comprends pas vraiment le modèle derrière, mais je l'ai trouvé très intéressant...

au bout du compte, c'est à vous de choisir la taille que vous prévoyez. Chaque OS a sa propre logique pour montrer des icônes spécifiques. Soit il sera augmenté ou réduit si vous ne fournissez pas les tailles d'image exactes pour chaque OS.

2
répondu bobbel 2015-12-06 22:43:03