Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Java / Proyectos / Efecto de explosión al abrir un JPanel

Efecto de explosión al abrir un JPanel

Autor jc mouse martes, marzo 19, 2013

En este tutorial crearemos un interesante efecto de explosión al momento de abrir un JPanel, este efecto puede extenderse a un JFrame o un jInternalFrame con pequeñas modificaciones al código. En el siguiente video puedes ver el resultado de este post.

Proyecto.

1. Crea un proyecto en netbeans, añade una clase «explode.java», un JFrame «gui.java», dos JPanel, «panel_A.java» y «panel_B.java».

boom nena

2. Los objetos panel_A y panel_B son quienes se verán afectados por el efecto de explosión, puedes añadir algunos  controles para que se pueda apreciar mejor el efecto, el JPanel contenedor (de JFrame gui.java) tiene una dimensión de  600×400 así que estos dos paneles no deben exceder ese tamaño.

baka

3. La interfaz principal, JFrame gui.java, esta formada por dos JButton y un JPanel llamado CONTAINER de tamaño 600×400, se cambio el color de fondo por uno mas oscuro para que pueda apreciarse mucho mejor el efecto de explosión.

php4ever

4. La clase «explode» es quien realizara el efecto de explosión, se utiliza «ScheduledExecutorService» el cual nos permite ejecutar una acción cada «n» tiempo.

En el constructor de clase se pasan dos parámetros de tipo JPanel, containercontent, el primero es el JPanel que contendrá al o los JPanel que tienen el efecto explode, el content, es el JPanel que se vera afectado con el efecto explode.

Tenemos también el método PLAY(), este es el que va incrementando el tamaño del JPanel ademas de que coloca el objeto en el centro del contenedor a medida que este crece. Cuando el JPanel content alcanza el máximo tamaño, se detiene.

import java.awt.Dimension;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.JPanel;
/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class explode {

    private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();    
    private Dimension d;
    private int count = 0;
    //
    private JPanel container;
    private JPanel content;
    //coordenadas del JPanel contenido
    private int px=0;
    private int py=0;
    //
    private int ancho_min = 10;
    private int alto_min = 10;
    private int velocidad = 20;//en milisegundos

    /**
 * Constructor de clase
 */
    public explode( JPanel container , JPanel content )
    {
        this.container = container;
        this.content = content;        
        this.container.removeAll();

        d = new Dimension( 10 ,10 );
        this.content.setSize( d );//tamaño inicial

        //coordenadas iniciales
        px = this.container.getSize().width/2-this.ancho_min/2;
        py = this.container.getSize().height/2-this.alto_min/2;        
        content.setLocation( px, py );
        content.setVisible(true);

        //se agrega al contenedor el JPanel contenido
        this.container.add( content );
        count = 10;
    }

    /**
 * Metodo para ejecutar el efecto EXPLODE
 */
    public void play()
    {       
        scheduler = Executors.newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate( 
            new Runnable() 
            {

                @Override
                public void run() {                     
                    //nuevo tamaño 
                    d = new Dimension( container.getSize().width * count/100 , container.getSize().height * count/100 );
                    count = count + 10;
                    //se recalcula la posicion mientras el jpanel crece
                    px = container.getSize().width/2-d.width/2;
                    py = container.getSize().height/2-d.height/2;        
                    content.setLocation( px, py );

                   if( count > 100 ) 
                   {                       
                       close();                       
                   }
                   content.setSize( d );
                   container.updateUI();                        
                }
              }, 100, velocidad , TimeUnit.MILLISECONDS );

    }

    /**
 * Metodo para terminar el efecto explode
 */
    public void close() {
        scheduler.shutdownNow();
    }

}//--> fin clase

5. Para acabar debemos implementar todo en el JFrame gui de la siguiente manera:

– Se crean dos instancias de los JPanel

01 public class gui extends javax.swing.JFrame {
02 
03     panel_A panel_a = new panel_A();
04     panel_B panel_b = new panel_B();

– Se añade el código para cada JButton de la siguiente forma

01     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
02         new explode( CONTAINER , panel_a ).play();
03     }                                        
04 
05     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
06         new explode( CONTAINER , panel_b ).play();
07     }

Ejecuta la aplicación y si no tienes errores ya puedes probar el efecto explosión.

exploto

Proyecto: JPanel Explode

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Generar clases desde Esquemas XSD

Generar clases desde Esquemas XSD

XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e...

Crear componente Switch de Android para Java Swing

Crear componente Switch de Android para Java Swing

En este post crearemos un componente que solo hay en android y que no esta disponible en la paleta de controles de Netbe...

GSON: Generar objetos java desde JSON

GSON: Generar objetos java desde JSON

En un post anterior vimos como utilizar GSON para serializar un objeto java en JSON, en esta oportunidad se vera el proc...

Reproducir video en java en un momento determinado

Reproducir video en java en un momento determinado

Para quienes hayan trabajado con JMF saben que es una librería de Java desarrollada por Sun Microsystems para facilitar...

Crea código HTML5 desde java con j2html

Crea código HTML5 desde java con j2html

j2html es una biblioteca para java que permite generar código html seguro desde código java utilizando sus propias etiqu...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama «Área de Notificación» es la sección de la barra de tareas...

8 comentarios en “Efecto de explosión al abrir un JPanel”

  1. Oscar dice:

    Hola, muy bueno tu trabajo. Me gustaría saber como hago para aplicarlo a un JFrame.

  2. Carlos dice:

    Buenisimo tu aporte mouse … como siempre

    Te queria preguntar …. si esto lo puedo usar en un JTABBEDPANEL ??

  3. Hans Cerda Woo dice:

    Hola hermano, q buen aporte, gracias por sus trabjos, eh aprendido muchisimo con ustedes, gracias Hermanos d JCMouse

  4. richar16 dice:

    Muy bueno. Se te agradece JC. ¿Quisiera saber si has usado JAVAFX 2.x para GUI?
    http://www.youtube.com/watch?v=o-iRc9XkgZ0

  5. VIANEY VARGAS dice:

    Excelente eres el mejor

  6. Jaime dice:

    Excelente, muy buena la paguina … 🙂 pasare seguido por aqui

  7. Carlos dice:

    Hola, esta muy padre tu aporte. Me gustaría saber como hacerle para aplicarlo a un formulario JFrame… gracias

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Crecen las startups en Bolivia: La mayoría está en Santa Cruz, Cochabamba y La Paz Según el «Mapeo del Ecosistema de Tec...

«Las palabras que elegimos dan forma a nuestra realidad. La Fuente Educada (Polite Type) es una fuente de código abierto...

En este post realizaremos un proyecto en VUE que se conectara a un REST API  y utilizara un servicio del mismo para obte...

En este post realizaremos una aplicación que pueda capturar nuestra voz y convertir en texto Pasar voz a texto con Andro...

Herramientas

Generador de Enlaces a Whatsapp