Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Buscar y cargar imagenes de disco

Buscar y cargar imagenes de disco

Por jc mouse sábado, febrero 23, 2013

Cuando se almacenan imágenes en una aplicación java y se desea después a modo de registro buscar estas y cargarlas en algún componente (JLabel por ejemplo) , se pueden utilizar bases de datos, MySQL, PostgreSQL, Access, etc. Otra alternativa es almacenar las imágenes en disco en una carpeta (/imagenes/ , /pictures/ , /files/, etc ) donde el nombre del archivo «mifoto.jpg» servirá como su identificador único.

En este post veremos como implementar este sencillo sistema de «busqueda» y su «carga» en un componente swing.

Necesitamos:

– Conocimientos del lenguaje java

– IDE Netbeans 6.9 o superior

– unas cuantas imágenes en formato JPG

Nivel: Intermedio 🙂

Tiempo: 15 minutos

1. Creamos un nuevo proyecto en Netbeans File -> New Project -> java -> Java Aplication. (nombre: xDBSample1)

2. Agregamos un JFrame llamado interfaz.java y una clase xBusqueda.java

3. Agregamos unos cuantos componentes al JFrame de la siguiente manera:

proyecto java

proyecto java

La carpeta con las imágenes podemos colocarlas en cualquier parte de la PC, aunque por lo general, se colocan en un directorio a lado de nuestro programa. Para este ejemplo, utilizaremos un directorio con imágenes en formato JPG en «e:\\imagenes\\», así que debes crearlo y colocar en el unas cuantas imágenes

4. En la clase xBusqueda.java , implementamos un método de búsqueda con un parámetro de entrada (String), el método retornará, si es que existen las imágenes, un DefaultListModel.

import java.io.File;
import java.io.FileFilter;
import javax.swing.DefaultListModel;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class xBusqueda {

     /** Ruta donde se encuentran las imagenes */
    //
    //private String appPath = System.getProperties().getProperty("user.dir");
    //public File directorio = new File( appPath + "\\imagenes\\" ); 
    //
    public File directorio = new File( "e:\\imagenes\\" );    

    /** Si la extensión es .JPG retorna TRUE, caso contrario FALSE */
    private FileFilter filefilter = new FileFilter() {        
        @Override
        public boolean accept(File file) {           
            return file.getName().endsWith(".jpg");
        }
    };

    /**
 * Busca las imagenes que se encuentran en un directorio
 * @param parametro String que corresponde al nombre del archivo a buscar
 * @return DefaultListModel
 */
    public DefaultListModel buscar( String parametro )
    {
        DefaultListModel defaultListModel = new DefaultListModel ();
        // Si es un directorio valido
        if ( directorio.isDirectory() ) {   
            // obtenemos su contenido
            File[] ficheros = directorio.listFiles( filefilter );             
            //y lo llenamos en un DefaultListModel
            for ( File fichero : ficheros ) 
            {
                if( fichero.getName().toUpperCase().indexOf( parametro.toUpperCase() ) >= 0 )
                {                        
                    defaultListModel.addElement( fichero.getName() );
                }                  
            }
        }        
        return defaultListModel;
    }

}//-->fin clase

5. Finalmente debemos implementar esta clase en la interfaz.java, de la siguiente manera:

– Creamos una instancia de la clase xBusqueda

private xBusqueda xb = new xBusqueda();

– En el único botón de la interfaz, añadimos el método de búsqueda

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        this.jList1.setModel( xb.buscar( this.jTextField1.getText() ) );
    }

– Cuando se realice un clic en el JList, la imagen seleccionada, se cargara en el JLabel2, se debe implementar un MouseListener en el constructor de clase para capturar los movimientos del ratón.

public interfaz() {
        initComponents();

        //Iniciamos el JList vacio
        this.jList1.setModel( new DefaultListModel () );
        //eventos del raton sobre el JList
        MouseListener mouseListener = new MouseAdapter() 
        {
            @Override
            public void mouseClicked(MouseEvent e) 
            {
                if (e.getClickCount() == 1 ) //1 clic izquierdo
                {
                    int posicion = jList1.locationToIndex( e.getPoint());                    
                    if( posicion >= 0 )
                    {
                        jLabel2.setText(""); 
                        jLabel2.setIcon(new javax.swing.ImageIcon( xb.directorio.toString() + "\\" + jList1.getModel().getElementAt(posicion)));
                    }                    
                 }
            }
        };
         this.jList1.addMouseListener(mouseListener);

    }

Eso es todo, si ejecutamos el programa, debemos tener algo como esto:

final

 Proyecto completo AQUI 🙂

Tags

Artículos similares

Microservicio REST Java con Spark – Parte 2

Segunda y ultima parte del post dedicado a la creación de un microservicio en lenguaje java utilizando el framework Spar[...]

Generar esquema XSD a partir de clases java

En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Sch[...]

Componente swing jcMousePanel v1.6.9

Agregar una imagen a un jpanel o a un jframe no es complicado pero para un programador novato puede convertirse en todo[...]

Microservicio REST Java con Spark – Parte 1

En este y un segundo post desarrollaremos un microservicio java utilizando el framework Spark que implementara las funci[...]

HELP ME – Envía un SMS de auxilio con tu ubicación

HELP ME, es una aplicación android gratuita que te permite enviar un mensaje de auxilio (S.O.S.) hasta 4 personas que tu[...]

Abrir enlace web desde JLabel con Java

El siguiente código te permite abrir enlaces web desde un JLabel, ademas aprovechando el soporte a etiquetas HTML del co[...]