sábado, 3 de noviembre de 2012

Google Maps

Pequeño proyecto ojala les sea utilidad
Proyecto que utiliza google maps y un complemento de subgurim el cual pueden descargar aquí, esta desarrollado en C# con ASP.net, visual estudios 2010
Google Maps, Asp.net, subgurim


pueden descargar los archivos en:
Manual para su creación

Proyecto

miércoles, 11 de julio de 2012

Listas enlazadas (Gráficas)

¿Que son las listas en lazadas?
Bueno en sentido general son estructura de datos, esencialmente serian una colección o secuencias de elementos colocados uno detrás del otro, tal como si se tratase de una fila.

¿Que diferencia hay entre las listas,tablas,vectores respecto a la lista enlazada?
Las listas, tablas, vectores tienen que ser definido antes de que el programa comienza a ejecutarse es decir el programador conoce la capacidad máxima de datos que contendrá el programa. Bueno pero en la mayoría de aplicaciones el programador no sabe el tamaño que llegara a tener, pues en este punto se vuelven útiles las listas enlazadas, pues no necesitamos saber numero de objetos que se crearan solos (no exactamente solos, nosotros haremos que se automatice).

Tipos de lista enlazadas:

  • Lista simplemente enlazada: Cada nodo(elemento) contiene un único enlace que lo conecta al nodo siguiente o sucesor, las lista hará recorridos directos hacia delante. El nodo final cerra siempre nulo.
  • Lista doblemente enlazada: Cada nodo contiene dos enlaces, uno hacia su nodo sucesor y otro hacia su nodo predecesor, se puede mover en ambas direcciones (claro no al mismo tiempo) hacia delante y hacia atrás, el nodo final siempre es nulo.
  • Lista circular simplemente enlazada: Es exactamente igual a la listas simplemente enlazada con el único detalle que el nodo final apunta hacia el nodo inicial
  • Lista circula doblemente enlazada: Lo repito de nuevo exactamente igual a la doblemente enlazada con la salvedad de nulo final apuntara al nodo inicial.
Bueno a todas estas ¿Como es un nodo? lo mejor sera verlo  gráficamente: Bueno empecemos con la lista simplemente enlazada en su forma gráfica contiene  un dato y un enlace llamado en otros lenguaje como punteros (en C++).
Lista Simplemente enlazada (en su forma gráfica)

Lista doblemente enlazada (en su forma gráfica)
la siguiente representación es la de una lista doblemente enlazada, note que bidireccional, podemos ir hacia atrás y hacia delante, esta es la más utilizada.





¿Como represento el último nodo? Pues como se acordaran en Lista doblemente y simplemente enlazada  tienen un nodo final es decir un tope, pues bien se puede representar de las siguientes 3 formas, el uso depende de los gustos o la facilidad para utilizarlo (noten que el ultimo dice null, lo coloque hacia por convenciones, pues en los libro que consulte siempre venían en ingles)

Ultimo nodo representación gráfica

Ultimo nodo representación gráfica

Ultimo nodo representación gráfica


Bueno ahora solo lo vimos en forma gráfica, que según mi experiencia es la forma mas fácil de aprender, en la siguiente entrega veremos como implementarlo, osea programarlo en java.



sábado, 7 de julio de 2012

¿Como sabes si la ruta ingresada es correcta?
Un ejemplo de esto seria: cuando un usuario escribe una ruta de acceso a un archivo, y una interrogante para el programador es como se que la ruta es la correcta.

Pues bien, para esto en java podemos hacer uso de las librerías llamada (mas bien las importaremos)
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.File;
estas nos proveerán de funciones de uso común, ahora nos importan Paths.get() esta convierte un string (o lo que capturemos) en un path o ficho de otra forma en una ruta. Donde Ruta es una JTextField

 Path RutaInterna = Paths.get(Ruta.getText());

File creara el fichero en su argumento colocaremos el nombre dado a nuestro Path, en este caso RutaInterna
describiré las funciones mas útiles para nuestro tarea.
-getRoot para obtener la raíz (solo la letra de la unidad)
-getParent obtiene la ruta(omite el ultimo directorio, pues lo toma como el nombre del archivo)
-getFileName Nombre del archivo

existen muchas mas. busquen path en java, o consulte esta pagina:
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Paths.html

 File fichero= new File(RutaInterna. getParent().toString());

Bueno este seria el código completo pues solo haría falta un if y utilizar el fichero.exisit.


            Path RutaInterna = Paths.get(Ruta.getText());//Convierto mi string en un path absoluto (en ruta)
            File fichero= new File(RutaInterna.getRoot().toString());//Lo mantego como archivo
            if (fichero.exists()==true){//Averiguo si existe
                Estado.setText("Estado: La ruta existe");
                }else{
                Estado.setText("Estado: La ruta no se puede encontrar");
            }

Por el momento a un no subiré el código pero en cuanto lo complete, podrán descargarlo.

jueves, 5 de julio de 2012

Formulario Modal y OptionPane

Formulario Modal
¿Que es un formulario Modal?
Es cuando una ventana retiene el foco sobre si misma impide que se trabaje sobre las demás ventanas, hasta que se elija alguna de las opciones disponibles dentro de ella.

Ejemplo: Cuando un procesador de texto pregunta si deseamos Guardar, hasta que elijamos "Guardar", "No Guardar" o "Cancelar" podremos manipular las otras ventanas.

¿Como podemos hacerlo en Java?
Pues existen varias formas (cada persona puede generar distintas formas de hacerlo) pero ahora explicare una de ella.

En java existe
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
ó
this.setDefaultCloseOperation(javax.swing.WindowConstants. EXIT_ON_CLOSE );

para el caso hacen la misma acción (a un que la ultima importa la librería y la primera ya ha sido hecha), automatiza la acción de cerrar, pues la quita de memoria, es decir la cierra, si no la colocáramos esto haría que el formulario solo se ocultaría, dejaría de ser visible pero a un en ejecución.

Pero lo que necesitamos es que el botón cerrar desencadene una acción por lo cual debemos programar la acción cerra y dejarla de la siguiente forma

this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

el cual no hará nada, no cerrara el formulario, por lo cual debemos usar un

this.addWindowListener(new WindowListener() )

el cual dará un error si utilizamos un editor(Netbeans) por lo cual solo veremos lo que indica el error y no sugerirá colocar los métodos abstractos, y aceptaremos la propuesta esto nos generar el código faltante, esta únicamente modificaremos windowsClosing(Windows Event e) y colocaremos un JOptionPane.showConfirmDialog para preguntar, o si lo deseamos podemos personalizar a un más utilizando un JOptionPane.showOptionDialog.

            @Override

            public void windowClosing(WindowEvent e) {
                int Confirmar= JOptionPane.showConfirmDialog(JL,"¿Realmente deseas cerrar?","Cerrar",JOptionPane.YES_NO_OPTION);
                if (JOptionPane.OK_OPTION==Confirmar){
                cerrar();
                }
            }
_______________________________________________
¿Como creas mensajes de texto en java?
Para esta tarea utilizamos JOptionPane esta tiene muchas variantes, las cuales veremos a continuación (ver código). con esto podemos enviar mensajes de confirmación, incluso pedir información con JOptionPane.showInputDialog o personalizar con JOptionPane.showOptionDialog, su aplicación es meramente sintáctica, por lo que la forma mas fácil de aprender a utilizarlas es la practica,
_______________________________________________

    public  void cerrar(){
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

Para tener una idea mas general presentare JOptionPane, para poder practicar y ver varias opciones que ofrece esta librería. Lo puedes visualizar descargando el código



__________________________________________________________________________
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.*;

/**
 *
 * @author Marco
 */
public class FormularioDeseaCerrar extends JFrame implements ActionListener{
    JButton JB1, JB2, JB3, JB4;
    JLabel JL;
    public  void cerrar(){
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
FormularioDeseaCerrar(){
    super("¿Desea cerrar?");
    JPanel Jp= new JPanel();
    this.add(Jp);
    JB1=new JButton("Mensaje");
    Jp.add(JB1);
    JB2=new JButton("Mensaje de entrada");
    Jp.add(JB2);
    JB3=new JButton("Mensaje de combo");
    Jp.add(JB3);
    JB4=new JButton("Confirmación");
    Jp.add(JB4);
    JL= new JLabel("Etiqueta                         ");
    Jp.add(JL);
    Jp.setLayout(new FlowLayout());
    JB1.addActionListener(this);
    JB2.addActionListener(this);
    JB3.addActionListener(this);
    JB4.addActionListener(this);
     this.setVisible(true);
     this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);//El boton cerra no hara nada(no cierra)
     this.setLocationRelativeTo(null);//Centra el formulario en la pantalla
    //Lo siguiente sera para modificar el comportamiento para cerrar el formulario y lanzar nuestra ventana de forma modal
     this .addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void windowClosing(WindowEvent e) {
                int Confirmar= JOptionPane.showConfirmDialog(JL,"¿Realmente deseas cerrar?","Cerrar",JOptionPane.YES_NO_OPTION);
                if (JOptionPane.OK_OPTION==Confirmar){
                cerrar();
                }
            }

            @Override
             public void  windowClosed(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowIconified(WindowEvent e) {
            //    throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowDeiconified(WindowEvent e) {
              //  throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowActivated(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowDeactivated(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
        });
    this.pack();
}
     public static void   main(String[] args) {
        new FormularioDeseaCerrar();
    }

    @Override
    public void  actionPerformed(ActionEvent e) {
        if (e.getSource()==JB1){
        int seleccion = JOptionPane.showOptionDialog(this,"Selecciona una opción","Selecciona",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,new Object[]{"Aceptar","No","Cancelar"},"Aceptar");    
         this .setTitle(null);
        switch (seleccion){
            case 0:
               JL.setText("Selecciono Aceptar");
                break;
            case 1:
                JL.setText("Seleccion No");
                break;
            case 2:
                JL.setText("Selecciono Cancelar");
                break;
        }
        }
        if (e.getSource().equals(JB2)){
            String Texto = JOptionPane.showInputDialog(this,"Por favor ingrese sus datos",JOptionPane.QUESTION_MESSAGE);
            JL.setText(Texto);
        }
        if (e.getSource().equals(JB3)){
            Object Texto1 = JOptionPane.showInputDialog( this ,"Seleccione una opcion", "Selección",JOptionPane.QUESTION_MESSAGE,null,new Object[]{"Opcion 1","Opcion 2","Opcion 3"},"Opcion 1");
            JL.setText(Texto1+"");
        }
        if (e.getSource().equals(JB4)){
            int confirmado = JOptionPane.showConfirmDialog( this ,"¿Lo confirmas?");
            if (JOptionPane.OK_OPTION == confirmado)
                JL.setText("Confirmado");
            else
                JL.setText("No borrare nada");
        }
    }
}
__________________________________________________________________________

La aplicación ya en ejecución.





jueves, 17 de mayo de 2012

Hagamos un formulario en java

Notas sobre java



Comencemos a programar en java, te recomiendo leer algún manual sobre java u orientado a programación orientada a objetos. Yo iré directo a los ejemplos.


  • Necesitaremos jdk
  • Un Wizard (asistente) este puede ser Netbeans, esto puede ser opcional. Pero la verdad facilita mucho el programar, lo hace menos tedioso.
Lo pueden descarga todo de la pagina de Oracle 

Bueno es hora de crear nuestro primer formulario:

Primer Proyecto en Netbeans

Lo primero que debemos hacer es crear nuestro primer proyecto en Netbeans.

Clic al botón resaltado de rojo
En categorías es coges java y proyectos (lado derecho) Java Application, clic en siguiente

Le agregas un Nombre a tu proyecto, en mi caso FormularioBasico, clic en Terminar

Listo tenemos nuestro proyecto, ahora programaremos


Primer Formulario en Netbeans

En netbenas existen formularios pre-fabricados, bueno pero ahora eso no nos interesa, ahora crearemos uno desde cero, solo con la clase que ya nos ha generado Netbenas, no profundizare mucho en los conceptos.

El siguiente seria el código ya implementado y con comentarios (de gris), este es solo una forma de hacerlo abajo explicare otra forma de generar un formulario.
__________________________________________________________________________


import javax.swing.JFrame; //Importamos la librería

/**
 * @author MaXr
 */
public class FormularioBasico extends JFrame{ //Extendemos a JFrame
    /**para heredar metods y atributos del JFrame    
     * para eso usamos "extends"
     *Crearemos nuestro metodo con el mismo nombre que la clase "FormularioBasico"
     */
    public FormularioBasico(){
    /* Utilizaremos el constructor super(Nombre de mi formulario)
     * this  se utiliza para hacer referencia al formulario
     */ 
        super("Mi Formulario");
        this.setSize(500, 500); //SetSize(Ancho, largo) sirve para darle el tamaño al formulario
        //Tambien puedes usar "this.pack;" funciona cuando ya tienes controles, automaticamente
        //se redimensiona el JFrame
        this.setVisible(true);//SetVisible(boolean)-- es para que se vea o este oculto el formulario
        //Si no se coloca como true no se mostrara en pantalla y netbeans automaticamente la finaliza
        this.setDefaultCloseOperation(EXIT_ON_CLOSE); //Esto servira para poder cerra tu aplicación
        //si no lo colocas utilizara por default dispose que solo lo quita de la pantalla, pero sigue
        //en ejecución
        this.setLocationRelativeTo(null);//Centramos el formulario, pues por default
        //aparece de lado superior izquierdo
     
    }
    public static void main(String[] args) {
        // En esta parte es donde se ejecutara es el método principal
        new FormularioBasico(); //llamo a mi metodo, new es un constructor crea a mi metodo
        //Noten que este metodo es estático 
    }
}
__________________________________________________________________________


Lo puedes descargar de aqui (Archivo, Descargar, para que baje completo)... Ojala les sirva.. mas adelante publicare otra forma para crear el fomulario.. difiere un poco del actual.. He iremos aprendiendo a colocar controles y a utilizar los layout..

Por favor deja tu comentario así creceremos en conocimiento y podre corregir mis errores.

Hasta la próxima..