Sie sind auf Seite 1von 3

Buscar y cargar imagenes de disco 23 febrero, 2013

Cuando se almacenan imgenes en una aplicacin java y se desea despus a modo de registro buscar estas y cargarlas en algn componente (JLabel por ejemplo) , se pueden utilizar bases de datos, MySQL, PostgreSQL, Access, etc. Otra alternativa es almacenar las imgenes en disco en una carpeta (/imagenes/ , /pictures/ , /files/, etc ) donde el nombre del archivomifoto.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 imgenes 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 La carpeta con las imgenes 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 imgenes en formato JPG en e:\\imagenes\\, as que debes crearlo y colocar en el unas cuantas imgenes 4. En la clase xBusqueda.java , implementamos un mtodo de bsqueda con un parmetro de entrada (String), el mtodo retornar, si es que existen las imgenes, un DefaultListModel. import java.io.File; import java.io.FileFilter; import javax.swing.DefaultListModel; /** * @web http://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 extensin 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 botn de la interfaz, aadimos el mtodo de bsqueda 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 ratn. 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:

Das könnte Ihnen auch gefallen