sábado, 4 de enero de 2014

Imagenes en Java

Quiero iniciar el año con una entrada muy simple sobre algo útil y básico cuando queremos personalizar, darle algún toque especial a nuestros proyectos entre muchas otras razones.....

Vamos a ver rápidamente como vincular imagenes en nuestras aplicaciones....algo corto pero sustancioso.....


El Ejemplo.

Como lo mencioné esta es una entrada de las básicas, tan solo nos enfocaremos en como vincular imagenes a nuestra aplicación..........tenemos un JFrame que contendrá un JLabel al cual le asignaremos una imagen de fondo, así como un botón de salir con un icono representativo...



La Aplicación.

Para esta aplicación tan solo utilizaremos 2 clases, la clase principal y la clase Ventana que carga la imagen anterior........adicionalmente tendremos un paquete imagenes donde agruparemos todas las imagenes con las que vamos a trabajar....


La imagen de Java la alojaremos en un JLabel usando para esto el método setIcon en el cual instanciaremos un objeto de tipo ImageIcon que buscaremos dentro del proyecto en la ruta definida........de la siguiente manera:
JLabel labelImagen;
labelImagen=new JLabel();
labelImagen.setBounds(50,70,400,330);
labelImagen.setIcon(new ImageIcon(getClass().
   getResource("/imagenes/java.jpg")));
labelImagen.setBorder(javax.swing.BorderFactory.createBevelBorder
    (javax.swing.border.BevelBorder.RAISED));

Adicionalmente usando el método setBorder le damos un estilo al jLabel para que tenga un borde con relieve.

Como vemos el método setIcon nos permite alojar una imagen en el componente al que se lo asignemos, la imagen del botón se realiza de la misma manera.......

Clase Principal.

En esta clase instanciamos la ventana de nuestra aplicación y hacemos el llamado para que sea visible.
package principal;

import ventana.VentanaPrincipal;

/**
 * @author HENAO
 *
 */
public class Principal {

public static void main(String[] args) {
  /**Declaramos el objeto*/
  VentanaPrincipal miVentanaPrincipal;
  /**Instanciamos el objeto*/
  miVentanaPrincipal= new VentanaPrincipal();
  /**Hacemos que se cargue la ventana*/
  miVentanaPrincipal.setVisible(true); 
 }
}

Clase VentanaPrincipal.

Esta clase corresponde a la interfaz de nuestra aplicación.
package ventana;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;


public class VentanaPrincipal extends JFrame implements ActionListener {
 
 private Container contenedor;//declaramos el contenedor
 JButton salir;//declaramos el objeto Boton
 JLabel labelTitulo;//declaramos el objeto Label
 JLabel labelImagen;

 
 public VentanaPrincipal(){
  /**permite iniciar las propiedades de los componentes*/
  iniciarComponentes();
     /**Asigna un titulo a la barra de titulo*/
  setTitle("CoDejaVu : Imagenes en Java");
  /**tamaño de la ventana*/
  setSize(500,520);
  /**pone la ventana en el Centro de la pantalla*/
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }

 private void iniciarComponentes() {
  contenedor=getContentPane();//instanciamos el contenedor
  /**con esto definmos nosotros mismos los tamaños y posicion
   * de los componentes*/
  contenedor.setLayout(null);
  
  /**Propiedades del boton, lo instanciamos, posicionamos y
   * activamos los eventos*/
  salir=new JButton();
  salir.setBounds(390,430,60,30);
  salir.setIcon(new ImageIcon(getClass().getResource("/imagenes/salir.gif")));
  salir.addActionListener(this);
  
  labelImagen=new JLabel();
  labelImagen.setBounds(50,70,400,330);
  labelImagen.setIcon(new ImageIcon(getClass().
        getResource("/imagenes/java.jpg")));
  labelImagen.setBorder(javax.swing.BorderFactory.createBevelBorder
        (javax.swing.border.BevelBorder.RAISED));
  
  /**Propiedades del Label, lo instanciamos, posicionamos y
   * activamos los eventos*/
  labelTitulo= new JLabel();
  labelTitulo.setText("setIcon");
  labelTitulo.setFont(new java.awt.Font("Comic Sans MS", 0, 28));
  labelTitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  labelTitulo.setBorder(javax.swing.BorderFactory.createBevelBorder
      (javax.swing.border.BevelBorder.LOWERED));
  labelTitulo.setBounds(100, 10, 300, 40);
  
  /**Agregamos los componentes al Contenedor*/
  contenedor.add(labelTitulo);
  contenedor.add(salir);
  contenedor.add(labelImagen);
 }

 /**Agregamos el evento al momento de llamar la otra ventana*/
 @Override
 public void actionPerformed(ActionEvent evento) {
  if (evento.getSource()==salir)
  {
   int respuesta = JOptionPane.showConfirmDialog(this,
     "Esta seguro que desea salir?", "Confirmación",
     JOptionPane.YES_NO_OPTION);
   if (respuesta == JOptionPane.YES_NO_OPTION)
   {
    System.exit(0);
   }
  }
 }
}

con el botón salir aplicamos uno de los ejemplos mostrados en la entrada anterior donde por medio de un JOptionPane solicitamos que se confirme si deseamos o no salir del sistema.

Y Listo!!! vimos de una forma rápida y simple como vincular imagenes en java, en próximas entradas veremos otros ejemplos trabajando con imagenes.....

También te podría Interesar.


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo.....y si te gustó...... te invito a compartir y
 Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)

3 comentarios:

  1. Hola como stan? queria preguntar como puedo obtener el porcentaje de la diferencia que existe entre dos imagenes similares en el modelo RGB de 24 bits???

    ResponderEliminar
  2. Muchas gracias Cristian que oportuno! Siempre consigo cosas muy útiles en tus enseñanzas.

    ResponderEliminar
  3. Hola, gracias por tus estupendos artículos.

    ResponderEliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!