Búsqueda por palabras claves

No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada

martes, 5 de junio de 2012

Lectura de archivos en java con delimitadores

Lectura de archivos con delimitadores:

Archivo almacenado consta de la siguiente información:

avila#12#24#soleado
toledo#16#15#soleado
madrid#15#27#soleado
barcelona#12#20#nublado


Crear un nuevo proyecto en Netbeans y Crear una Clase Clima:

package proyectoarchivos;

/**
 *
 * @author PauloGT
 */
public class Clima {
    
    private String ciudad;
    private int min;
    private int max;
    private String condicion;

    public Clima() {
    }

    @Override
    public String toString() {
        return "Clima{" + "ciudad=" + ciudad + ", min=" + min + ", max=" + max + ", condicion=" + condicion + '}';
    }
    

    public Clima(String ciudad, int min, int max, String condicion) {
        this.ciudad = ciudad;
        this.min = min;
        this.max = max;
        this.condicion = condicion;
    }

    /**
     * @return the ciudad
     */
    public String getCiudad() {
        return ciudad;
    }

    /**
     * @return the min
     */
    public int getMin() {
        return min;
    }

    /**
     * @return the max
     */
    public int getMax() {
        return max;
    }

    /**
     * @return the condicion
     */
    public String getCondicion() {
        return condicion;
    }

    /**
     * @param ciudad the ciudad to set
     */
    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }

    /**
     * @param min the min to set
     */
    public void setMin(int min) {
        this.min = min;
    }

    /**
     * @param max the max to set
     */
    public void setMax(int max) {
        this.max = max;
    }

    /**
     * @param condicion the condicion to set
     */
    public void setCondicion(String condicion) {
        this.condicion = condicion;
    }
           
}

Creamos una clase GestionarInformacion para leer el archivo y pasar la información a Objetos
package proyectoarchivos;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author PauloGT
 */
public class GestionInformacion {

    File archivo = null;
    FileReader fr = null;
    BufferedReader br = null;
    ArrayList lineas = new ArrayList();
    ArrayList climasCiudad = new ArrayList();

    public void separadores(String linea) {
        StringTokenizer st = new StringTokenizer(linea, "#");
        System.out.println("Datos Personales: ");
        int i = 0;
        String palabras[] = new String[st.countTokens()];
        while (st.hasMoreTokens()) {
            palabras[i] = st.nextToken();
            i++;
       }
        climasCiudad.add(new Clima(palabras[0], Integer.parseInt(palabras[1]), Integer.parseInt(palabras[2]), palabras[3]));
    }

    public ArrayList devolverObjetos() {
        return climasCiudad;
    }

    public void leerArchivo(String nombre) {
        try {
            archivo = new File(nombre);
            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;
            try {
                while ((linea = br.readLine()) != null) {
                    System.out.println(linea);
                    separadores(linea);
                }

            } catch (IOException ex) {
                Logger.getLogger(GestionInformacion.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(GestionInformacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        
            
        

    }
}

Finalmente realizamos la llamada a las clases creadas
public static void main(String[] args) {
        // TODO code application logic here
        GestionInformacion obj=new GestionInformacion();
        obj.leerArchivo("clientes.txt");
        for (Clima x :obj.devolverObjetos()) {
            System.out.println(x.toString());
        }
        
    }

jueves, 31 de mayo de 2012

Este ejercicio hace la simulación de un formulario que hace una consulta, la cual se demora en la "búsqueda" por lo que aparenta que el formulario está colgado pues una vez presionado el botón no podemos seleccionar ningún elemento del ComboBox.

package hilos2;


import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;

/**
 *
 * @author PauloGT
 */
public class Ventana extends Frame {
 
private JButton boton;
   private JComboBox combo;
   
   public Ventana(){
     setLayout(new FlowLayout());
     add(boton=new JButton("Este duerme el proceso: "));
     boton.addActionListener(new EscuchaBoton());
    add(combo=new JComboBox());
    combo.addItem("Item 1");
    combo.addItem("Item 1");
    combo.addItem("Item 1");
    setSize(300,300);
   
   }
   
   class EscuchaBoton implements ActionListener{

 @Override
 public void actionPerformed(final ActionEvent arg0) {
   
    // Simulación de que hace la consulta y se demora
    try {
    Thread.sleep(10000);
     System.out.println("Finalizo el proceso.. ");
   } catch (final InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
 }
   }
}

El main de nuestra aplicación sería:

public static void main(String[] args) {
        // TODO code application logic here
        Ventana obj=new Ventana();
        obj.setVisible(true);
     
    }
Para Solucionar este tipo de problemas debemos usar hilos, por lo que necesitamos simplemente cambiar el código de nuestro programa de la siguiente manera:
package hilos2;


import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;


/**
 *
 * @author PauloGT
 */
public class Ventana_1 extends Frame {
 
private JButton boton;
   private JComboBox combo;
   
   public Ventana_1(){
     setLayout(new FlowLayout());
     add(boton=new JButton("Este duerme el proceso: "));
     boton.addActionListener(new EscuchaBoton());
    add(combo=new JComboBox());
    combo.addItem("Item 1");
    combo.addItem("Item 1");
    combo.addItem("Item 1");
    setSize(300,300);
   
   }
   
   class EscuchaBoton implements ActionListener{

 @Override
 public void actionPerformed(final ActionEvent arg0) {
   
    
   boton.setEnabled(false);
                        TareaBoton t=new TareaBoton();  // Creamos una instancia de la clase Hilo que creamos
                        t.start(); // ejecutamos el hijo
  
 }
    
   }
   
   class TareaBoton extends Thread{    
     // creamos una innerclass que derive de los Hilos y manejamos todo lo que deseamos realizar en el método run.
       public void run(){
    
           try {
  Thread.sleep(10000);
  System.out.println("Finalizo el proceso.. ");
  } catch (final InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
      }
   
   }
}


Con esto nuestra aplicación no tendrá el problema de que aparenta estar congelado!!! Cualquier novedad pueden hacer sus comentarios.