MANIPULACIÓN DE DATOS Asignatura: Desarrollo deaplicaciones II Unidad Temática: Manipulación de Datos Objetivo: El alumno implementará una aplicación que permita el manejo de datos y la generación de reportes para presentar la información de una BD. Uso del componente jtable de Java Con la llegada de Swing, como parte de la JFC(Java Foundation Classes), la construcción de interfaces Gráficas de Usuario(GUI) recibió desde el siempre utilizado JButton, hasta el flexible JEditorPane o el JDesktopPane, pasando por los JTree y los JTable; sin dejar de mencionar a los JFilechooser y los JDialog, todos ellos, y los componentes restantes, permiten la creación de aplicaciones con interfaces gráficas más intuitivas y completas. De todos los componentes que forman Swing, quizá los JTable, sean los componentes con APIs más extensas (la clase JTable tiene más de 100 métodos), y quizá también los más complejos. Afortunadamente esa complejidad les permite ser también de los componentes Swing más personalizables y potentes; al igual que en la mayoría de las otras clases Swing no es necesario conocer todos sus métodos para comenzar a utilizarlos y darles una utilidad práctica. Para acceder a los datos de un componente JTable lo hacemos igual que en un arreglo bidimensional, asignando las coordenadas del dato que requerimos manipular. Ejemplo Sencillo Creamos un nuevo proyecto de java y agregamos una clase jframe Form (Ventana). En la clase jframe Form Agregamos un componente jtable de la biblioteca swing
Para modificar el número de columnas, renglones y los títulos de las columnas, accedemos a la propiedad model Lo modificamos de la siguiente forma
Si ejecutamos la aplicación se verá así Para Nuestro ejemplo renombramos el jtable como tbldatos Agregamos un componente jtextarea y lo renombramos como txtdatos Agregamos un botón que dispara el proceso de leer los datos del jtable y transferirlos al jtextarea En el método ActionPerformed agregamos el siguiente código: private void jbutton1actionperformed(java.awt.event.actionevent evt) { String datos = ""; //Variable temporal para recabar los datos int renglones = tbldatos.getrowcount(); //Cerificamos el número de renglones for(int x = 0; x < renglones; x++) { //Recorrido de los renglones for(int y = 0; y < 3; y++){ //Recorrido de las columnas if(tbldatos.getvalueat(x, y)!= null) //Si el dato es valido //Colocamos los datos en la variable temporal datos = datos + tbldatos.getvalueat(x, y).tostring() + " "; datos = datos + "\n"; //Cada recorrido de renglón agregamos un salto de linea txtdatos.settext(datos); //Pasamos los datos al TextArea
Ejecutamos la aplicación Podemos modificar los datos del jtable y si damos clic en el botón transfiere los datos al TextArea Ahora vamos a Agregar 3 componentes jtextfield para y los renombramos txtnombre, txtapellop, txtapellidom Agregamos un botón y en su método ActionPerformed colocamos el siguiente código: private void jbutton2actionperformed(java.awt.event.actionevent evt) { //La variable ren la declaramos como global y la inicializamos en cero if(ren < tbldatos.getrowcount()) { tbldatos.setvalueat(ren, ren, 1); //Asignamos el número de renglón tbldatos.setvalueat(txtnombre.gettext(), ren, 1); tbldatos.setvalueat(txtapellidop.gettext(),ren, 2); tbldatos.setvalueat(txtapellidom.gettext(), ren, 3); else { javax.swing.table.defaulttablemodel model = (javax.swing.table.defaulttablemodel) TblDatos.getModel(); model.addrow(new Object[]{txtNombre.getText(), txtapaterno.gettext(), txtamaterno.gettext()); ren++;
//Limpiamos los textfield txtnombre.settext(""); txtapellidop.settext(""); txtapellidom.settext(""); //Activamos el componente txtnombre txtnombre.requestfocus(); La variable ren la declaramos como global, después de la declaración de la clase: Y la inicializamos en cero en el método constructor Ejecutamos la aplicación y agregamos datos a través de los textfield: Asignamos datos a través de los TextField