Você está na página 1de 5

En este tutorial se muestran los pasos para crear una animación sencilla utilizando Java2d y el

IDE Netbeans. La animación consistira en una pelota de futbol que se movera de un lado a otro
de un contenedor JPanel.
¿Que necesitamos?

 IDE netbeans 6.9 o superior


 Conocimientos basicos sobre java (Nivel Intermedio Chapi)
 una imagen PNG de una pelota de tamaño 50×50 pixeles
 GANAS……………….. de aprender 🙂

Proyecto.

1. Crea un nuevo proyecto en netbeans, yo lo llame proyecto “jcbola” 🙂 , continuemos. Añade


una clase JFrame, llamala “interfaz.java”, añade tambien dos clases las cuales debes llamar
“pelota.java” y “panel.java”.
La estructura de la interfaz comprende un objeto jmenu y dos submeus, jmenuitem1 y
jmenuitem2, ademas se coloca en el jframe un JPanel, puedes ver como queda en la imagen
siguiente:
Es todo por el monento en la clase interfaz, el codigo restante lo escribiremos mas adelante,
ahora debemos añadir codigo al resto de las clases que creamos.
2.Continuamos con la clase pelota.java, esta clase, como su nombre lo indica, es la pelota de
futbol en si, utiliza una imagen PNG de una pelota de futbol de dimensiones 50×50 pixeles,
esta imagen se encuentra en el mismo paquete que las demas clases. El resto del código
tanto los metodos y variables, esta en un espanglish que creo que esta perfectamente
entendible
Clase pelota.java

package jcbola;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;

/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class pelota {

private Image balon;


//Coordenadas de la pelota
private int X;
private int Y;

private int velocidad_X;


private int velocidad_Y;

private int limite_izquierda=0;


private int limite_derecha;
private int limite_superior=0;
private int limite_inferior;

public pelota(int x, int y) {


//coordenadas iniciales
this.X = x; this.Y = y;
//imagen de la pelota
balon = new ImageIcon(getClass().getResource("pelota.png")).getIm
age();
}

//dado las dimensiones del contendor JPanel


public void LimitesXY(int width, int height) {
limite_derecha = width - balon.getWidth(null);
limite_inferior = height - balon.getHeight(null);
}

//recalcula variables para dar la sensacion de movimiento


public void move() {
//nueva posicion
X += velocidad_X;
Y += velocidad_Y;
//controla que la pelota no salga de los limites del contenedor
if (X < this.limite_izquierda) {
X = 0;
velocidad_X = -velocidad_X;
} else if (X > limite_derecha) {
X = limite_derecha;
velocidad_X = -velocidad_X;
}
if (Y < this.limite_superior) {
Y = 0;
velocidad_Y = -velocidad_Y;

} else if (Y > limite_inferior) {


Y = limite_inferior;
velocidad_Y = -velocidad_Y;
}
}

public void setVelocidadXY(){


velocidad_X = getNumberRandom(4);
velocidad_Y = getNumberRandom(8);
}

public void dibujar(Graphics g) {


Graphics2D g2 = (Graphics2D)g;
g2.drawImage(balon, X, Y, null);
}

//devuelve un número aleatorio entre 1 y MAX


private int getNumberRandom(int Max){
return (int) (Math.random()*Max+1);
}
}

3. Nos toca ahora añadir el código necesario a nuestra clase panel.java, esta clase se
extiende de un JPanel y es aqui donde se realiza la animación, para lo cual hacemos uso de
un TIMER, este timer nos permite pintar el movimiento de la pelota cada cierto tiempo ( 16
milisegundos). Esta clase, hace uso de la clase anterior, pelota.java.

package jcbola;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class panel extends JPanel{

//instancia a la pelota en posicion (X,Y) => (0,0)


private pelota mipelota = new pelota(0, 0);
private Timer timer;

//Constructor
public panel(Dimension d) {
this.setSize(d);
this.setPreferredSize(d);
this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.setBackground(new Color(0,255,0));
mipelota.LimitesXY(getWidth(), getHeight());
//para la animación
timer = new Timer(16, new ActionListener (){
public void actionPerformed(ActionEvent e) {
mipelota.move();
repaint();
}
});
}

//Controla el inicio y fin de la animación


public void animar(boolean turnOnOff) {
if (turnOnOff) {
mipelota.setVelocidadXY();
timer.start();
} else {
timer.stop();
}
}
//pinta la animación
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
mipelota.dibujar(g);
}

4. Más dificil no podia estar, porque ya terminamos :), solo nos falta implementar estas clases
en nuestra interfaz, vamos a la parte del codigo de nuestra interfaz.java, añadimos el codigo :

//instancia a mi clase panel.java


panel mipanel;

/** Creates new form interfaz */


public interfaz() {
initComponents();
setTitle( "Java2D Animación by Mouse" );
setLocationRelativeTo(null);
//se crea instancia a panel de animacion y se añade a la interfaz
mipanel=new panel( this.jPanel1.getSize() );
this.jPanel1.add(mipanel);
}

//esto para los eventos de los submenus


private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt)
{
mipanel.animar(true);
}

Você também pode gostar