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».
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.
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.
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, container y content, 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.
Proyecto: JPanel Explode
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! :)
Un Tabbed Activity te permite cambiar la vista entre fragmentos desplazando el dedo de izquierda a derecha o de derech...
Los archivos CSV (del inglés comma-separated values – separados por comas) son un tipo de documento en formato abi...
TextToSpeech o TTS, es el sintetizador de voz para android, en los celulares inteligentes viene un motor TTS por defecto...
La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en...
En ocasiones por motivos cualesquiera que sea queremos pasar proyectos hechos en netbeans a Eclipse, Netbeans cuenta con...
XAMPP es un software para la gestión de base de datos, servidor web apache e interprete para lenguajes como php o perl....
Los comentarios estan cerrados
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Hola, muy bueno tu trabajo. Me gustaría saber como hago para aplicarlo a un JFrame.
Buenisimo tu aporte mouse … como siempre
Te queria preguntar …. si esto lo puedo usar en un JTABBEDPANEL ??
Hola hermano, q buen aporte, gracias por sus trabjos, eh aprendido muchisimo con ustedes, gracias Hermanos d JCMouse
Muy bueno. Se te agradece JC. ¿Quisiera saber si has usado JAVAFX 2.x para GUI?
http://www.youtube.com/watch?v=o-iRc9XkgZ0
Excelente eres el mejor
Excelente, muy buena la paguina … 🙂 pasare seguido por aqui
la wea
Hola, esta muy padre tu aporte. Me gustaría saber como hacerle para aplicarlo a un formulario JFrame… gracias