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);
}
}
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
barre des tâches-40x40 dans la barre des tâches elle-même, l'application de vol stationnaire montre 20x20
Windows + Tab-20x20
Alt+Tab-40x40 en bas à droite, réduit 20x20 en haut à gauche.
Gestionnaire des Tâches - 20x20
@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
)
- génération
- réglage standard (seulement banalisé l'Utilisation de petits boutons de barre des tâches)
- votre fenêtre sur mon écran
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):
également, pas d'icône dans le moniteur D'activité:
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).
Alt + Tab
pas d'icône au Gestionnaire des tâches
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.