2012-01-09 26 views
6

me gustaría realizar el siguiente animación de carga con el swing de Java:Java swing Cargando Animación

enter image description here

El círculo tiene que girar en sentido horario.

¿Cuál sería la mejor manera de hacerlo?

Muchas gracias.

+0

Intercambiar un grupo de sprites podría funcionar para esto. Por supuesto, la carga tendría que hacerse en una cadena de fondo, como la proporcionada por un SwingWorker. –

+0

Vea también este [Q & A] (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text-correctly). – trashgod

Respuesta

3

Esto se puede dibujar con un componente personalizado o un icono personalizado, usando llamadas regulares Java2D. Para mí, parece un Arc2D con un BasicStroke bastante grueso dibujado con un GradientPaint.

O bien, exporte marcos de Inkscape (u otro programa de gráficos) y cárguelos como imágenes.

9

Solo usa un ImageIcon y un gif animado. ver setImageObserver en ImageIcon.

Los iconos de carga se pueden hacer usando una variedad de generadores en línea como AjaxLoad.

+0

MUY AGRADABLE! ¡útil! – drzymala

6

Esperemos que no sea demasiado tarde para esto.

me las arreglé para conseguir el gif animado dentro de mis JPanel esta manera:

private JPanel loadingPanel() { 
    JPanel panel = new JPanel(); 
    BoxLayout layoutMgr = new BoxLayout(panel, BoxLayout.PAGE_AXIS); 
    panel.setLayout(layoutMgr); 

    ClassLoader cldr = this.getClass().getClassLoader(); 
    java.net.URL imageURL = cldr.getResource("img/spinner.gif"); 
    ImageIcon imageIcon = new ImageIcon(imageURL); 
    JLabel iconLabel = new JLabel(); 
    iconLabel.setIcon(imageIcon); 
    imageIcon.setImageObserver(iconLabel); 

    JLabel label = new JLabel("Loading..."); 
    panel.add(iconLabel); 
    panel.add(label); 
    return panel; 
} 

Algunos puntos de este enfoque:
1. El archivo de imagen se encuentra dentro de la jarra;
2. ImageIO.read() devuelve una Imagen Buffered, que no actualiza el ImageObserver;
3. Otra alternativa para encontrar imágenes que se incluyen en el archivo jar es pedirle al cargador de clases de Java, el código que cargó su programa, que obtenga los archivos. Sabe dónde están las cosas.

Al hacerlo, pude obtener mi gif animado dentro de mi JPanel y funcionó a las mil maravillas.

+1

gif animado no es una opción, ya que carece de efectos transparentes buenos y suaves. Un spinner necesita ser transparente y con un fondo 100% transparente, que los gifs no admiten, sin hacer que la animación sea fea y pixelada. Simplemente funciona para bordes rectangulares y sin desvanecimiento entre objetos. Entonces ... ¿cómo hacer esto correctamente? APNG podría hacerlo, pero, por supuesto, Java no lo admite sin recursos. –