codigo - settitle java
Tamaños de iconos de marco utilizados en Swing (5)
@mKorbel Huh ... no se dio cuenta de que habría una diferencia allí. ¡Bien, las preferencias del usuario / sistema operativo son más estrictas que las expectativas del programador! ;)
la respuesta es solo acerca de Win8 (ent, 64b ...) / WinXP (no mencionado, pero la configuración es bastante similar)
hay otras opciones, por favor, consulte el error o característica: Swing fuente gui predeterminada incorrecta para Win6 + por @kleopatra, etc.
es posible configurar el icono de 64x64 en el escritorio en win8
por ejemplo, mi configuración (no personalizaciones gráficas avanzadas, a pesar de que soy administrador de Win2008 / 12,
blablabla-
"dejando surealismo con esquema de color invertido, ahora solo con colores negros y naranjas"-end blablabla
)
- generando
- configuración estándar (solo sin marcar Usar botones de la barra de tareas pequeña)
- tu ventana en mi pantalla
Podemos usar una lista para inicializar los íconos de ventana usando Window.setIconImages(List<? extends Image>)
. ¿Cuáles son los diferentes tamaños de íconos típicamente usados en un JFrame
?
Código
Este código convierte 64 imágenes de diferentes tamaños (de 16x16, incrementando en 2) en íconos para la lista.
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);
}
}
Vistas típicas para esta PC basada en Windows 7
Nota: @bobbel informa que se usan los mismos tamaños para Windows 10.
Marco - 20x20
Barra de tareas: 40x40 en la barra de tareas, la aplicación emergente muestra 20x20
Windows + Tab - 20x20
Alt + Tab - 40x40 en la esquina inferior derecha, encogido 20x20 en la esquina superior izquierda.
Administrador de tareas - 20x20
He descubierto algo interesante en Win10 (podría ser también cierto para Win7 y Win8, pero aún no lo he probado).
Por defecto, Win10 usará tamaños de imagen de 20x20 (pequeño) y 40x40 (grande).
Entonces, ¿qué pasa si dejas que comiencen tus tamaños de imagen a los 22 ? ¡Utilizará tamaños de imagen de 30x30 (pequeño) y 40x40 (grande)!
Generar una tabla completa muestra comportamientos interesantes (las pruebas entre los tamaños de inicio probados dan como resultado tamaños previos, por lo que 4 también dará como resultado 20x20 y 40x40 ):
Si comienza en 2 , usará 20x20 y 40x40 .
Si comienzas a los 22 , usará 30x30 y 40x40 .
Si comienza en 32 , usará ambos 40x40 .
Si comienza en 42 , usará ambos 60x60 .
Si comienza en 62 , usará 78x78 y 80x80 .
Si comienzas en 80 , usará ambos para 80x80 .
Si comienza en 82 , usará 98x98 y 120x120 .
Si comienza en 100 , usará 100x100 y 120x120 .
Si comienza en 102 , usará 118x118 y 120x120 .
Si comienza en 120 , usará ambos para 120x120 .
Si comienza en 122 , usará 138x138 y 158x158 .
... está bien, esto es suficiente ...
Realmente no consigo el patrón, pero lo encontré muy interesante ...
Al final, depende de ti, qué tamaños proporcionas. Cada sistema operativo tiene su propia lógica para mostrar iconos específicos. O se ampliará o reducirá si no proporciona los tamaños de imagen exactos para cada sistema operativo.
Parece que no hay iconos Frame o Dock cuando se ejecuta en Mac OS X 10.9 (Mavericks):
Además, no hay ningún icono en el Monitor de actividad:
Ubuntu 12.04 LTS
El tamaño del icono de la barra de tareas se puede cambiar entre 32 y 64, pero todo el tiempo usa el ícono de 32x32. También he recompilado el programa, pero sigo usando el mismo ícono.
Barra de tareas y ventana (no hay ícono en las ventanas).
Alt + Tab
sin icono en el administrador de tareas