jueves, 28 de enero de 2010

COMO PONER UNA IMAGEN DE FONDO A UN JFRAME EN JAVA NETBEANS

Pues bien este proyecto ya es bastante discutido pero es una buen amanera de comenzar!!!

Materiales:

*Se necesita crear un Nueva Aplicacion Java (EJ: Pintura) --> Menu Nuevo Proyecto, JAva Aplication
*Se necesita crear un nuevo Package imagen dentro del proyecto para manejar las imagenes
ademas de copiar dentro de el un imagen con el nombre de fondo1.jpg
*Se necesita crear un jfame para mostrar la imagen pintada en el fondo.
*Se necesita crear una clase publica (Ej:Pintar) Click Derecho en Package nueva clase pintar.


Ok comensemos:

Primero la clase pintar

codigo de la clase pintar:

package pintar; /* Nombre de la aplicacion que hemos creado asigando por defecto*/

/*importacion de librerias y clases*/
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;

/**
*
* @author Fernando Perez
*/
/* Decalrar la clase como una extencion de un Japanel*/
public class pintar extends javax.swing.JPanel{

public pintar(){

this.setSize(769,627);
/* Ya declarado la extencion esta linea especifica el tamaño del Jframe o Jpanel a Pintar
el valor de setSize(?,?) puede modificarse a su antojo para esta tarea.*/
}

@Override
public void paint(Graphics g){
Dimension tamanio = getSize();
ImageIcon imagenFondo = new ImageIcon(getClass().getResource("/imagen/fondo1.jpg"));
g.drawImage(imagenFondo.getImage(),0,0,tamanio.width, tamanio.height, null);
/*getdraw obtiene y aplica la imagen segun el tamaño declarado en la linea setSize(?,?)*/
setOpaque(false);
super.paintComponent(g);
}
}

Segundo Creamos el Jframe (Elimina la clase main si quieres para que el Jframe se ejecute solo),
pues bien haciendo click derecho en el jframe en la seccion de eventos alicar click izquierdo en el evento windowsactivate:

Codigo del Jframe

package pintar;

import java.awt.BorderLayout;

/**
*
* @author Fernando Perez
*/
public class lienzo extends javax.swing.JFrame {


public lienzo() {
initComponents();
}


@SuppressWarnings("unchecked")
//
private void initComponents() {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(java.awt.event.WindowEvent evt) {
formWindowActivated(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 771, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 582, Short.MAX_VALUE)
);

pack();
}


private void formWindowActivated(java.awt.event.WindowEvent evt) {
pintar pintar_lienzo = new pintar();
this.add( pintar_lienzo , BorderLayout.CENTER);
pintar_lienzo.repaint();
// aqui la funcion incorporada repaint activa el pintado del Jframe
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
lienzo f = new lienzo();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});

}

No hay comentarios:

Publicar un comentario