23 jun 2008

Galeria de imagenes en Java

netbeans2 Mi IDE o complador de programacion en Java

Lo que haremos es una mini galeria sencilla de imagenes in usar una base de datos, ya que es bien sabido que una base de datos es como un conjunto de vectores asi que usaremos vectores como ven....

Abrimos Netbeans y diseñamos con el editor un pequeño frame y un panel dentro de estos insertamos cada uno de los objetos.

Jlabel, 2 JButton y quedara mas o menos a si..

galeria1

En la fuente del codigo quedara algo asi, Netbeans lo que hace es simplificar el diseño,

 

public class Galeria1_1 extends javax.swing.JFrame {
    /** Creates new form Galeria1_1 */
    public Galeria1_1() {
        initComponents();
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setFont(new java.awt.Font("Tahoma", 1, 14));
        jButton1.setText("Atras");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setFont(new java.awt.Font("Tahoma", 1, 14));
        jButton2.setText("Adelante");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 346, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .add(layout.createSequentialGroup()
                .add(71, 71, 71)
                .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 66, Short.MAX_VALUE)
                .add(jButton2)
                .add(50, 50, 50))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 447, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 48, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 45, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        pack();
    }// </editor-fold>

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        fotoAdelante();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        fotoAtras();
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Galeria1_1().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration
}

Como ven en la parte de JButton tenemos dos procedimientos que es fotoadelante y fotoatras aqui se va encargar este metodo de moverse dentro de la galeria o mas bien de los vectores.

 

Agregamos elementos..importamos paquetes

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

y demas elementos

public class Galeria extends javax.swing.JFrame {
    Image foto;
    Vector imagenes = new Vector();
    int index = 0;
    String folder ="";

Cargamos el album de imagenes de la carpeta donde se encuentran...

void cargarAlbum(){
          imagenes.clear();
          index = 0;
          String album = ("C:\\herramienta\\hddr\\photos");
          File albumCarpeta = new File (album); 
          folder = albumCarpeta.getName();
          System.out.println(albumCarpeta.getName());
          File[] fotos = albumCarpeta.listFiles();
          for (int i=0; i<fotos.length; i++)
              if (fotos[i].isFile()){
                  imagenes.add(fotos[i].getName());         
                  System.out.println(fotos[i].getName());
              }
                          jLabel1.setIcon(new javax.swing.ImageIcon(folder+"\\"+(String)imagenes.elementAt(0)));
  }

 

Despues agregamos lo dos procedimiento del movimiento..

void fotoAdelante(){
      System.out.println("Adelante ..");
      if ((index+1) < imagenes.size()){
          index++;
        ImageIcon imagen = new ImageIcon(folder+"\\"+(String)imagenes.elementAt(index));
        jLabel1.setIcon(imagen);
        System.out.println(index + " : " + folder+"\\"+(String)imagenes.elementAt(index));
    }
    else
    {
        JOptionPane.showMessageDialog(null, "Fin de las Fotos del Album","Atencion",JOptionPane.OK_OPTION );     
    }
  } 
  void fotoAtras(){
      System.out.println("Atras ..");
      if ((index-1) > -1){
          index--;
        ImageIcon imagen = new ImageIcon(folder+"\\"+(String)imagenes.elementAt(index));
        jLabel1.setIcon(imagen);
        System.out.println(index + " : " + folder+"\\"+(String)imagenes.elementAt(index));
    }
    else
    {
        JOptionPane.showMessageDialog(null, "Fin de las Fotos del Album","Atencion",JOptionPane.OK_OPTION );     
    }
  }

Y LISTO, tenemos nuestra galeria de imagenes usando Vectores jejeje que les parece....

 

6 comentarios:

Anónimo dijo...

hola amigo, tengo un problema con las librerias no las encuentro, si no es mucha molestia podras poner un enlace para descargarlas. saludos

Anónimo dijo...

Muy buena la explicacion de tu galeria de imagenes, es una buena forma para empezar a manejar imageicon en java.
Estoy trabajando con una base de datos Oracle, la cual guarda imagenes en un campo blob pero primero tiene que cargarlas de un directorio donde se van copiando las imagenes con un codigo, ahora viendo tu aplicacion seria ideal implementarlo asi puedo mostrar todas las imagenes usando solamente el directorio

Equipo dijo...

Estoy trabajando con tu ejemplo de galería porque hay algunos bugs que estoy tratando de corregir o el programa no lo publicaste completo

Jektour dijo...

holaa!! perdon por mi tardanza pero bueno, no se cual sea el problema en si, el programa sigue funcionando, recuerden que netbeans al usar el modo de visualizar componentes el codigo se agrega solo, lo demas es poner el codigo de lo que hara cada boton, ahora bien las imagenes deben cargarse en un vector que este en el void cargarAlbum, La variable String album es donde esta la direcccion de la imagen,
Creo yo que no tiene nada que se me haya pasado, como lo escribi antes el programa sigue ahi..si el programa sigue sin funcionar mandenme sus correos y les envio el codigo tal y como esta..:D

Anónimo dijo...

hola amigo quisiera q me ayudes con los errores q me sale please si me pudieras mandar el codigo a esta direccion thali_01_system@hotmail.com
mil gracias...

Anónimo dijo...

hola me podrias mandar tu codigo porfavor, hise todo los pasos que propusiste pero no logro visualizar la imagen, si carga la carpeta pero el label no, ayuda!!!!!
MI CORREO ES anakaren2390@hotmail.com

Related Posts Plugin for WordPress, Blogger...