Download Descargar
Document related concepts
no text concepts found
Transcript
ISTP: Manuel Seoane Corrales Java Swing PRÁCTICA Nº 07 Diseñe una aplicación utilizando Jtable para ingresar, eliminar, editar e inicializar los siguientes datos: nombres, apellidos, edad y sexo como muestra la imagen. PROCEDIMIENTO: 1. Crea un nuevo proyecto y un nuevo paquete con el nombre practica07. 2. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal con distribución BoderLayout. 3. En el norte colocamos un panel llamado panNorte con distribución BorderLayout. 4. En el centro de panNorte colocamos un nuevo panel con el nombre panDatos con distribución GridLayout de 2 filas y 4 columnas para los datos de nombre, edad, apellido y sexo. 5. En el sur del panel panNorte colocamos un nuevo panel llamado panBotones con GridLayout de 1 fila y 4 columnas para colocar los botones. 6. En el centro del PanelPrincipal colocamos un nuevo panel llamado panTabla con BorderLayout. 7. En el centro del panel panTabla colocamos un JScrollPane y encima un JTable de nombre miTabla. Observe la distribución de los componentes y los nombres utilizados en ellos. Lic. Bernardo C. Hermitaño Atencio ISTP: Manuel Seoane Corrales Java Swing 8. Ahora vamos a crear una clase propia de nombre Datos. Clic derecho en el paquete practica07 y elegimos nueva Java class. 9. Escribimos el contenido de esta clase. public class Datos{ String nombre; String apellido; int edad; String sexo; public Datos(String nombre, String apellido, int edad, String sexo) { this.nombre = nombre; this.apellido = apellido; this.edad = edad; this.sexo = sexo; } } 10. Para el código de los métodos get-set, Netbeans lo genera de la siguiente manera: a) Clic derecho en la clase Datos. b) Elige Refactor. c) Luego realiza clic en encapsúlate fields. d) En ventana que presenta realice un clic en Select All y luego en Refactor. e) Finalmente Netbenas habrá generado el código todos los métodos get y set de los atributos seleccionados. Lic. Bernardo C. Hermitaño Atencio ISTP: Manuel Seoane Corrales public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellido() { return apellido; } public void setApellido(String apellido) { this.apellido = apellido; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } Java Swing Código get y set generado automáticamente a través de la ventana anterior. Con esto hemos terminado la creación de nuestra clase propia Datos. Lic. Bernardo C. Hermitaño Atencio ISTP: Manuel Seoane Corrales Java Swing 11. Debido a que nuestra tabla necesita de un objeto modelo para administrar su contenido, vamos a declarar e instanciar dicho modelo. Para esto, vamos al código del PanelPrincipal y completamos lo siguiente: public class PanelPrincipal extends javax.swing.JPanel { DefaultTableModel miModelo; String[] cabecera= {"Nombre", "Apellido","Edad","Sexo"}; String[][] data = {}; /** Creates new form PanelPrincipal */ public PanelPrincipal() { initComponents(); miModelo=new DefaultTableModel(data,cabecera); miTabla.setModel(miModelo); } Observe que nuestra tabla (miTabla) le especificamos que utilice el modelo instanciado con los títulos de tabla y con su contenido vacío. 12. Ahora vamos a programar la acción del botón Ingresar: doble clic en el botón Ingresar del PanelPrincipal y digita el siguiente código. private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: ingresar(); } void ingresar(){ // lee los datos de los objetos gui Datos d=new Datos(leeNombre(), leeApellido(), leeEdad(), leeSexo()); // coloca los datos leidos en una fila Object[] fila = { d.getNombre(), d.getApellido(), d.getEdad(), d.getSexo() }; // agrega nueva fila con datos obtenidos miModelo.addRow(fila); // borra datos ingresados borrar(); }// fin del método ingresar String leeNombre(){ return txtNombre.getText(); } String leeApellido(){ return txtApellido.getText(); } int leeEdad(){ return Integer.parseInt(txtEdad.getText()); } Lic. Bernardo C. Hermitaño Atencio ISTP: Manuel Seoane Corrales Java Swing String leeSexo(){ return cboSexo.getSelectedItem().toString(); } void borrar(){ txtNombre.setText(""); txtApellido.setText(""); txtEdad.setText(""); cboSexo.setSelectedIndex(0); txtNombre.requestFocus(); } 13. Ahora regresamos al diseño para programar la acción del botón Eliminar. private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: eliminar(); } void eliminar(){ // obtiene numero de filas seleccionadas int filas=miTabla.getSelectedRowCount(); if (filas==0) // no hay filas seleccionadas JOptionPane.showMessageDialog(this, "Debe seleccionar una o más filas!"); else { // una o mas filas seleccionadas int fila; do { // obtiene fila seleccionada fila=miTabla.getSelectedRow(); // remueve fila obtenida miModelo.removeRow(fila); } while (fila>=0); // mientras haya filas seleccionadas }// fin del else }// fin del método eliminar 14. Regresamos al diseño para programar la acción del botón Editar. private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: editar(); } Lic. Bernardo C. Hermitaño Atencio ISTP: Manuel Seoane Corrales Java Swing void editar() { // obtiene numero de filas seleccionadas int filas = miTabla.getSelectedRowCount(); if (filas==0) JOptionPane.showMessageDialog(this, "Debe seleccionar una fila!"); else { // obtiene fila seleccionada int fila = miTabla.getSelectedRow(); // obtiene valores de la tabla y los edita setNombre(miTabla.getValueAt(fila,0).toString()); setApellido(miTabla.getValueAt(fila,1).toString()); setEdad(miTabla.getValueAt(fila,2).toString()); setSexo(miTabla.getValueAt(fila,3).toString()); }// fin del else }// fin del método editar 15. Regresamos al diseño para programar la acción del botón Inicializar. private void btnInicializarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: inicializar(); } void inicializar(){ // obtiene numero de filas de la tabla int filas = miTabla.getRowCount(); // remueve todas las filas de la tabla for (int fila=0; fila<filas; fila++) miModelo.removeRow(0); // borra datos borrar(); }// fin del método inicializar 16. Finalmente creamo un frame. Clic derecho en el paquete practica07 elegimos nuevo JFrame Form y le asignamos el nombre Principal y en su propiedad title “Jtable, Default TableModel” y le colocamos BorderLayaout, luego ingresamos el siguiente codigo. public class Principal extends javax.swing.JFrame { static int w=500, h=400; /** Creates new form Principal */ public Principal() { initComponents(); add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } Lic. Bernardo C. Hermitaño Atencio