jueves, 9 de octubre de 2008

Uso de JTable II - 2. Introducir contenido al JTable

2. INTRODUCIR CONTENIDO AL JTABLE.

     Como había mencionado antes, JTable emplea un objeto llamado DefaultTableModel que en realidad este es el que guarda el contenido para luego colocarlo en el JTable. Cada vez que modifiquemos ese objeto automáticamente se refrescara el JTable. Básicamente, para agregar datos a una tabla hay que crear un vector del tipo String cuyo tamaño sea menor o igual a la cantidad de columnas que tenga nuestra tabla, luego se llena ese vector con los datos que deseamos mostrar en la tabla (teniendo en cuenta el orden en que deben aparecer).

    Si tenemos una tabla de 5 columnas, el tamaño del vector necesariamente debe ser menor o igual 5. Si creamos un vector de 3 elementos y le asignamos valores, cuando agreguemos la fila al JTable, esta tendrá las 3 primeras columnas con datos y las restantes en blanco, esto es útil cuando tenemos columnas con tipos de datos numéricos, booleanos o los que queremos dejar en blanco para rellenar luego (como en el detalle de una factura por ejemplo, donde dejamos libre una columna para rellenar con la cantidad del producto que se esta facturando).

    Con el siguiente ejemplo muestro como es que se hace esto. Como ya mencione, utilizo Netbeans para desarrollar el ejemplo así que asumo que el IDE crea las declaraciones para crear el objeto JTable.

    El ejemplo completo consiste en una interfase en la que escribimos el DNI, apellido y nombre de una persona y luego la agregamos al JTable.

    El ejemplo completo se puede descargar de aquí

     

    A continuación voy mostrar e intentar explicar la parte que nos interesa, la de cómo agregar datos al JTable.

     

    El sistema corriendo se ve de la siguiente manera:

    El código necesario para poder cargar datos al JTable es el siguiente

     

    private void agregarDatos()

        {

            // obtengo el modelo de la tabla (El TableModel)

            DefaultTableModel modelo = (DefaultTableModel)this.jTableDatos.getModel();

            // defino el vector que contendra los datos a cargar en la tabla

            String datos[] = new String[3];// como la tabla contiene 3 columnas, le asigno 3 como tamaño al vector

            // ahora cargo el vector con los datos que cargo el usuario.

            datos[0] = this.jTextDni.getText().trim();// primero el DNI, el trim() es para que no se cargue el espacio en blanco

            datos[1] = this.jTextApellido.getText().trim();// ahora el apellido.

            datos[2] = this.jTextNombre.getText().trim(); // por ultimo el nombre.

            //ahora agrego los datos al TableModel

            modelo.addRow(datos);

            // y listo, los datos aparecen en la tabla

        }

     

    Cada vez que se presione el botón “Agregar”, el sistema toma los datos cargados en los JTextField y los agrega a la tabla

    martes, 7 de octubre de 2008

    Uso de JTable I - 1. Algo de teoria

    Muchas veces he tenido que realizar algún software que use JTable y cuando ya pensaba que nada nuevo me iba a hacer falta aprender surgía alguna complicación y tenía que tratarla de forma especial, por lo que tenía que pasar algunas horas en google tratando de encontrar esa forma especial de trabajar con los problemas. Lo que pretendo con esta serie de post es compartir un poco las formas de usar un JTable de muchas diferentes maneras, aunque de seguro no son todas pero a medida que vaya aprendiendo cosas nuevas las voy a ir posteando.

    Todos los ejemplos que presento han sido creados por mi para mostrar como trabaja la funcionalidad que intento mostrar, aunque el código no siempre va a ser totalmente mío, en la medida que pueda voy a citar la fuente pues el merito es de ellos, además, a veces ni se que es lo que hacen pero igual funciona jejeje. Después de todo, mientras funcione, solo modificamos lo que nos sirve J Los ejemplos fueron escritos usando NetBeans como IDE.

    Espero que les sea útil.

    Los temas a tratar en la serie de post son los siguientes:

    1. Algo de teoría.
    2. Introducir contenido al JTable.
    3. Seleccionar una fila del JTable.
    4. Limpiando el contenido del JTable.
    5. Establecer el tamaño de las columnas por defecto.
    6. Validar el contenido de los campos.
    7. Definir el número de columnas en tiempo de ejecución.
    8. Cualquier otra cosa que salga o consulta sobre el tema.
    1. ALGO DE TEORIA.

    Con la clase JTable, se pueden mostrar tablas de datos, y opcionalmente permitir que el usuario los edite. JTable no contiene ni almacena datos; simplemente es una vista de nuestros datos.

    Algunos de los constructores que emplea esta clase son los siguientes:

    Ø  JTable()

    o    Construye un JTable() predeterminado

    Ø  JTable(int numRows, int numColumns)

    o    Construye un JTable()con numRows y numColumns de celdas vacías, utilizando DefaultTableModel

    Ø  JTable(Object[][] rowData, Object[] columnNames)

    o    Construye un JTable() visualizando los valores de rowData en una matriz bidimencional, utilizando columnNames como nombres para las columnas

    Ø  JTable(TableModel dm)

    o    Construye un JTable() con dm como modelo de tabla, un modelo de columna predeterminado y un modelo de selección predeterminado

    Ø  JTable(TableModel dm, TableColumnModel cm)

    o    Construye un JTable() con dm como modelo de tabla, cm como modelo de columna y un modelo de selección predeterminado.

    Ø  JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)

    o    Construye un JTable() con dm como modelo de tabla, cm como modelo de columna y sm como modelo de selección.

    Ø  JTable(Vector rowData, Vector columnNames)

    o    Construye un JTable() para visualizar los valores del Vector de Vectores, rowData, con nombres de columnas dados en columnNames.

    En el siguiente ejemplo, para crear un JTable se emplea el siguiente código

     

    private javax.swing.JTable jTableDatos;

    jTableDatos = new javax.swing.JTable(); // estamos usando el primer constructor de la lista.

     

    Pero como había mencionado antes, la clase JTable solo muestra los datos. Para determinar que es lo que queremos mostrar tenemos que utilizar un TableModel.

     

    El modelo de tabla o TableModel

    Los modelos de tabla son objetos que implementan la interfase TableModel; a través de ellos es posible personalizar mucho más y mejor el comportamiento de los componentes JTable, permitiendo utilizar al máximo sus potencialidades. Todas las tablas cuentan con un modelo de tabla.

    La clase AbstractTableModel es la que implementa directamente a la interfase TableModel, aunque es esta clase la que se recomienda extender para utilizarla como modelo de tabla, existe un modelo de tabla predeterminado que facilita mucho el trabajo con tablas. Este modelo predeterminado es la clase DefaultTableModel.

    Sus constructores son los siguientes:

    Ø  DefaultTableModel()

    o    Construye un DefaultTableModel.

    Ø  DefaultTableModel(int numRows, int numColumns)

    o    Construye un DefaultTableModel con numRows y numColumns

    Ø  DefaultTableModel(Object[][] data, Object[] columnNames)

    o    Construye un DefaultTableModel e inicia la tabla pasando data y columnNames al método setDataVector()

    Ø  DefaultTableModel(Object[] columnNames, int numRows)

    o    Construye un DefaultTableModel con un número de columnas equivalentes al número de elementos o valores nulos en columnNames y numRows

    Ø  DefaultTableModel(Vector columnNames, int numRows)

    o    Construye un DefaultTableModel con un número de columnas equivalentes al número de elementos o valores nulos en columnNames y numRows.

    Ø  DefaultTableModel(Vector data, Vector columNames)

    o    Construye un DefaultTableModel e inicia la tabla pasando data y columnNames al método setDataVector()

     Para mas detalles ver el JavaDoc.

    Si bien el modelo predeterminado DefaultTableModel nos facilita mucho el trabajo, no es el optimo dado que emplea demasiados recursos, sin embargo, para aplicaciones pequeñas funciona bastante bien. Mas adelante, en otro articulo sobre optimización de código Java voy a mostrar como mejor el rendimiento de los JTable.

     

    En el ejemplo ya teníamos creado el JTable, ahora hay que agregarle el TableModel. Nuestro código queda así:

     

    private javax.swing.JTable jTableDatos;

    jTableDatos = new javax.swing.JTable(); // estamos usando el primer constructor de la lista.

    jTableDatos.setModel(new javax.swing.table.DefaultTableModel(

                new Object [][]

                {

                            // no se agrega ninguna fila

                },

                new String []

                {

                    "D.N.I", "Apellido", "Nombre"

                }

            )); // estamos usando el tercer constructor de la lista

     

    Ahora ya tenemos creado la tabla con tres columnas (“D.N.I”, “Apellido” y “Nombre”) y ninguna fila, pero si al momento de llenar datos en la tabla, estos superan el tamaño del JTable (superan el numero de filas que el JTable esta mostrando), no podremos visualizarlos. Para ello necesitamos tener las barras de desplazamiento horizontal y vertical (JScrollPanel). Esto se consigue creando un JSCrollPanel y agregando a este el JTable que ya tenemos creado. Nuestro código queda de la siguiente manera:

     

    jScrollPane1 = new javax.swing.JScrollPane();

    jTableDatos = new javax.swing.JTable();

    jTableDatos.setModel(new javax.swing.table.DefaultTableModel(

                new Object [][]

                {

     

                },

                new String []

                {

                    "D.N.I", "Apellido", "Nombre"

                }

            ));

            jScrollPane1.setViewportView(jTableDatos);

     

    Y listo, ya tenemos creado nuestra tabla con barras de desplazamiento horizontal y vertical.

     

    Sin embargo, todo esto nos lo podemos ahorrar simplemente arrastrando el componente JTable de la lista de componentes del IDE NetBeans, pero siempre es bueno saber de donde es que vienen las cosas.

    viernes, 3 de octubre de 2008

    Intro a java

    View SlideShare presentation or Upload your own. (tags: siscom 2007)

    miércoles, 10 de septiembre de 2008

    Java FX Script

    ¿Qué es JavaFX Script?

    JavaFX Script es un lenguaje de scripting declarativo estáticamente tipado, llamado anteriormente F3 (Form Follows Function) que fue desarrollado en su mayoría por Chris Oliver, quien trabaja para Sun microsystems desde la adquisición de SeeBeyond Technology por parte de esta a fines de 2005.

    El compilador de JavaFX, así como gran parte de las bibliotecas gráficas y herramientas se encuentran liberadas con la licencia GPL2, a través del proyecto OpenJFX.

    JFXS Forma parte del conjunto de tecnologías JavaFX, las cuales tienen el propósito de facilitar la creación de Rich Internet Applications (RIAs) con gran cantidad de contenido multimedia, respetando siempre la idea de Java de poder luego ejecutarlas en forma independiente de la plataforma. Lo último que pudo verse de esta tecnología son las "draggable applets", que son aplicaciones (que como su nombre indica) pueden arrastrarse desde el navegador al escritorio, en donde se convierten en una especie de "widgets" (similares a aquellos del Dashboard en Mac OS X o los del Sidebar de Windows Vista), estas fueron presentadas en JavaOne 2008, y les dedicamos un post hace tiempo en el que pueden obtener más info.

    La idea de esta serie de artículos es introducir las características de este novedoso lenguaje a través de la realización de pequeños ejemplos. En esta primera parte solo utilizaremos el Pad de JavaFX (click en el link para ejecutarlo), que es una pequeña aplicación multiplataforma que podrán ejecutar desde Internet utilizando Java Web Start (sólo requiere tener instalado el JRE de Java).

    Fuente:
    - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 -

    Ezequiel Aranda
    Campus Ambassador

    Sun Microsystems, Inc.

    miércoles, 27 de agosto de 2008

    Jornadas de Software Libre en San Pedro

    Inscripción a las jornadas de Software Libre en San Pedro se realizara por medio de email a las cuentas:

    inferno23@gmail.com o menteslibres2007@gmail.com

    Enviar los siguientes datos: Nombres, apellido, DNI si desean el certificado avalado por la UNJU, Libreta Universitaria. Detallar si son alumnos de otras instituciones (UCSE, INTELA , Instituto DELTA , Profesorado de Tecnología de Perico, etc. ).

    Se realizara la inscripción en la escuela Tecnica N1 Coronel Manuel Alvarez Prado ubicada en Miguel Araoz y Mitre, todos los días de 19hs a 2130hs en la Biblioteca de la institución. Se inscribira hasta el mismo día del evento.

    Se puede llevar la PC para instalar la versión que más les interese mas los aplicativos que deseen.

    sábado, 16 de agosto de 2008

    Primera Jornada de Software Libre – Filial San Pedro de Jujuy

    El día 6 de Septiembre a partir de las 9hs hasta las 18hs tendrá lugar la Primera Jornada de Software Libre Filial San Pedro de Jujuy en las instalaciones de la escuela Tecnica N1 Coronel Manuel Alvaresz Prado ubicada en Miguel Araoz y Mitre.

    RESPONSABLES:

    Los Responsables de la realización de las jornadas estará a cargo de la Asociación Civil Mentes Libres con Personeria Juridica N° 1229 –G- 08 cuyos representantes son:

    • Presidente: Marco Antonio Farfan
    • Secretario: Herrera, Antonio Ramon
    • Vocal Titular:Analia Carolina Asaye

    CONTENIDOS : La Primera Jornada de Software Libre Filial San Pedro esta organizado en

    • Introducción del Software Libres
    • Las distintas distribuciones de Linux
    • Aplicaciones del Software Libre.
    • Instalación de las distintas distribuciones del Linux.

    Ponencias confirmadas:

    Distribuciones de Linux y las herramientas libres (Luis Wayar)

    Aplicaciones del software Libre en la Educación (Luis Wayar)

    Configuraciones de Instalación del Software Libre (Daniel Castro)

    Para disertar se necesita enviar una solicitud a marcko@jujuyjug.com.ar hasta el 20 de agosto con el resumen del tema, su CV y lo que necesitan para realizar la disertación. Todo esto es para ser presentado en el rectorado de la UNJU para pedir certificación como disertante en la resolución. Las solicitudes recibidas después del 20, podrán exponer su tema pero no es factible que se reciba el certificado de disertante.

    viernes, 1 de agosto de 2008

    Aprender Java

    Aprender la plataforma Java puede ser una aventura. Con las tecnologías de Java, uno puede hacer mucho. Sin embargo, encontrar que es lo que uno quiere hacer y donde empezar es el primer desafío a superar. Este artículo describe las herramientas que uno puede utilizar para APRENDER JAVA . Ustedes elijen con que herramienta (gratuitas todas ellas) comenzar, en función de lo que ya conocen. Después de leer esta nota, descubrirán recursos para aprender estas tecnologìas, y los detalles del lenguaje de programación Java.

    Greenfoot Lunarlander
    Figura 1. Greenfoot Lunarlander

    La aventura de aprender la plataforma Java, debería ser DIVERTIDA, CLARA y EXCITANTE. Comiencen con una de las herramientas que se listan a continuación, trabajen en su camino a la siguiente herramienta, e incluyan los recursos a medida que se sientan cómodos. Antes de darse cuenta, ya van a estar creando aplicaciones Java!!!

    Antes de comenzar

    Antes de comenzar a leer sobre estas herramientas, necesitan bajarse Java Standard Edition (Java SE) el cual usan todas las herramientas.

    Bajar Java SE

    Una vez que hayan instalado  Java SE en sus máquinas, estàn listos para empezar a utilizar las siguientes herramientas.

    Análisis previo antes de comenzar

    Que herramienta decidan usar depende del conocimiento previo que traigan del mundo de la programación, y en particular de Java. Todas estas herramientas esta diseñadas para mostrarte como programar en forma gráfica, en vez de lanzar un puñado de lineas de código confusas. Las herramientas muestran las relaciones entre objetos (aprenderán sobre objetos con estas herramientas), y como hacer para que estos objetos interactuen y hagan cosas. Cabe aclarar, que cada herramienta fue diseñada pensando en un público específico, con cierto grado de conocimiento.

    Si ustedes comienzan  de cero (sin experiencia en programación) el camino a seguir es el siguiente:Greenfoot > BlueJ > the NetBeans IDE BlueJ Edition, como se muestra en la figura2 (les dije que las 3 son GRATUITAS???):

    Learning Path for new developers
    Figura 2. Herramientas y camino de aprendizaje

    Mucho de ustedes, tal vez ya sepan algo de programación, o tal vez conozcan un poco de algún otro lenguaje de programación, o tal vez tomaron una clase o 2 pero necesitan mayor entendimiento y dominio del tema. La descripción de cada herramienta a continuación les ayudará a decidir por donde les conviene arrancar

    Las Herramientas

    Cada herramienta te ayuda a visualizar que está ocurriendo cuando se crea un programa. Estas te ayudan a ver a los objetos y sus interacciones para que puedas entender mejor los conceptos abstractos

    Greenfoot [Download]

    Greenfoot (que es gratuita) está pensada para alumnos de nivel secundario (13+),  pero esto no significa que alguien menor o mayor no se beneficie de utilizarla. Basicamente, Greenfoot esta pensada para que se den los “PRIMEROS PASOS” en la programación a nivel colegio secundario. El énfasis esta puesto en lograr crear algo divertido y excitante en pantalla en forma rápida y sencilla. Es una puerta fácil, y agradable al mundo de la programación para que las personas puedan llevarse una primera impresión agradable de la  tarea de “codear” como algunos dicen. Es IDEAL para personas que  a priori, no tienen interés en la programación. Greenfoot es divertida, ágil, y genera interés porque está especializado en crear aplicaciones gráficas en 2D. Esto permite hacer cosas en forma rápida, y fácil, y que sean visualmente atractivas. Greenfoot te guía en tu programación. Greenfoot permite crear juegos, animaciones, y otras aplicaciones atractivas visualmente, que empiezan a mostrar conceptos básicos de la programación orientada a objetos, y otros conceptos un poco más complejos como polimorfismo, herencia, hasta concurrencia y otros temás complejos. Una vez que “estás enganchado”,  puedes graduarte y pasar al BlueJ, y un rato más tarde probar el NetBeans IDE BlueJ Edition.

    Bajar Tutorial introductorio (en inglés)


    BlueJ [Bajar]

    BlueJ (que es gratuita) esta pensado para un ámbito universitario introductorio (primer año), un terciario o las carreras de tecnicatura. Se asume que ustedes ya tienen un conocimiento previo de programación, que están interesados en aprender programación y que lo quieren hacer de una manera mas organizada. BlueJ es genérico. Puede ser utilizado para desarrollar todo tipo de aplicaciones. BlueJ enseña los fundamentos de objectos, metodos, y campos, y muestra en forma visual la relación entre cualquier cosa que uno crea. Uno aprende  los engranajes principales del lenguaje Java, y puede ver que está ocurriendo en forma visual. El énfasis aquí está puesto en la visualización y las técnicas de interacción  para crear un ambiente altamente interactivo que motive la experimentación y exploración.

    BlueJ Soporta:
    RingsDataListIcon.gif Ambiente totalmente integrado
    RingsDataListIcon.gif Display de estructuras de clases gráfico
    RingsDataListIcon.gif Edición textual y gráfica
    RingsDataListIcon.gif Editor Built-in, Compilador, Máquina Virtual, Debugger, etc.
    RingsDataListIcon.gif Interface facil-de-usar, ideal para novatos
    RingsDataListIcon.gif Creación de objetos interactiva
    RingsDataListIcon.gif ILlamada a objetos interactiva
    RingsDataListIcon.gif Testing interactivo
    RingsDataListIcon.gif Desarrollo de aplicaciones incremental

    Bajar Tutorial BlueJ

    NetBeans IDE BlueJ Edition [Bajar]

    BlueJ es un ambiente ideal para programadores novatos. Ofrece herramientas educativas, como las facuilidades de interacción y visualización que ayudan muchísimo el aprendizaje de conceptos de la programación orientada a objetos. Mientras que BlueJ cubre la fase introductoria en el aprendizaje a programar, NetBeans (que tambien es gratuito) ofrece herramientas potentes de calidad profesional, y el salto inevitable del anterior a este ha sido una dificultad que han tenido que soportar los estudiantes - hasta ahora.

    Esta herramiente ofrece un camino de migración para los estudiantes que quieren dar el salto entre una herramienta educativa, y un IDE profesional. El plug-in BlueJ agrega 2 características muy importantes al IDE NetBeans:

    • Permite al NetBeans abrir, trabajar con, y crear proyectos BlueJ en el formato nativo BlueJ( sin convertilo a un proyecto estandar de Netbeans), permitiendo así que uno pueda empezar a trabajar con Netbeans, y volver al BlueJ, cuando uno se sienta cómodo de hacerlo.
    • Agrega una vista BlueJ a la ventana de proyectos de NetBeans, que le da un look familiar a los familizarizados con BlueJ dentro de Netbeans.

    Bajar Tutorial del plug - in BlueJ para Netbeans

    • Un tutorial extendido por by Dana Nourie.
    • Un video de NetBeans/BlueJ desde el Sun Developer Network.
    • Un conjunto de  Notas de laboratorio para ayudarlos en la transición entre BlueJ y Netbeans, y algunas ventajas que ofrece este último a los programadores.
    • Si quieren ver que cuan lejos pueden llegar con Netbeans, miren el excelente tutorial de Brian Leonard Zuul everywhere l.
    Tutoriales para aprender el lenguaje de programación Java

    Una vez que estén usando BlueJ o el NetBeans BlueJ Edition, ustedes querrán además aprender los detalles del lenguaje de programación Java. El mejor recurso para esto ess El tutorial Java. No dejen que estos tutoriales online los sobrepase. Absorban las cosas paso a paso. Recuerden que para las instituciones educativas inscriptas en la SAI, están los cursos de learningconnection disponibles.

    Esta información, proviene de la traducción del post de  Dana Nourie

    http://java.sun.com/developer/technicalArticles/young_dev_learning_path/

    Y me tomé el trabajo de realizar una traducción casera para motivar en particular a todos los docentes de scundarios, y a todas las personas que esten cerca de ámbitos educativos de nivel medio, para proponerles comenzar a trabajar con alguna de estas herramientas (LES MENCIONE QUE SON GRATUITAS) , en particular GreenFoot, que a mi entender (no soy un experto de la pedagojía) es una excelente herramienta para introducir a los chicos en el ámbito de la programación.

    Aquellas instituciones que esten interesadas en esto, desde ya les ofrecemos nuestra ayuda en la traducción de los tutoriales, en la instalación y configuración de los aplicativos y en todo lo que necesiten para llevar esto a cabo

    En el New to Java Programming Center. encontrarán articulos y tutoriales posteados por estudiantes de Java qhe colaboran mutuamente generando materiales. El nivel de programación suele cubrir desde principiantes hasta intermedios. La Learning Tab en el centro tiene una lista de artículos y tutoriales que seguro serán de gran ayuda para mucho de ustedes.

    Adicionalmente, se pueden suscribir a  Java Technology Fundamentals mediante RSS feeds. Estos artículos van apuntados desde principiantes hasta niveles intermedios también. Muchos de estos artículos fueron publicados en java.sun.com, algunos son clases del Java Tutorial, y otros especialmente escritos para Java Technology Fundamentals y el New to Java Programming Center.

    Si tienen una cuenta en Facebook, haganse fan de la página Getting Started with Java Programming y visitenla regularmente, ya que nuevos contenidos son agregados automáticamente mediante RSS feeds.

    Como siempre digo (aparte de que todas herramientas son GRATIS) los invitamos a que dejen sus comentarios al respecto

    Ezequiel Singer
    Campus Ambassador

    Sun Microsystems, Inc.

    martes, 29 de julio de 2008

    Linked In

    Una comunidad social y profesional, 99% Java, 100% open source

    En la siguiente presentación pueden observar la arquitectura y otros detalles técnicos, de una de las comunidades sociales más populares del momento: Linked in.

    Esta comunidad esta costruida en un 99% con tecnología Java, y utiliza todos sistemas Open source. Lo interesante, es que con estas tecnologías gratuitas y abiertas, la gente de linked in ha creado uno de los emprendimientos en comunidades sociales más exitosos de la web, que nuclea a profesionales de todo el mundo y les permite establecer conexiones con sus colegas.

    Ezequiel Singer SUN Microsystems