Vous êtes sur la page 1sur 10

Universidad Nacional Tecnolgica del Cono Sur

EAP Ingeniera de Sistemas

Prctica N 6:
Ejercicio 1:

JTabbedPane, JTable, JTree, JDialog

Disee un formulario que permita manipular (crear, editar y eliminar) registros de clientes. Asimismo que permita consultar los registro de clientes organizados por categoras.
Estructura del Proyecto

Libreras Importadas al proyecto para cambiar la UI Look and Feel

JFrameMDI

Barra de Men DskFondo

Panel_Capas en el Borde Central (Center Border) LblFondo

________________________________________________________________________________ 1 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur


Estructura del Formulario JFrameMDI

EAP Ingeniera de Sistemas


Acciones de los Controles Permite acceder a las opciones del men

Control JFrame Panel_Capas MnuArchivo MnuOperaciones

Propiedad defaultcloseOperation: EXIT_ON_CLOSE title: Control de Clientes layout: BorderLayout (Diseo de Borde) Direccin: Center mnemonic: a text: Archivo mnemonic: o text: Configuraciones Acelerator: Ctrl + R icon: Usuario.png mnemonic: r text: Registrar Usuarios Acelerator: Ctrl + C icon: Listar.png mnemonic: c text: Consultar Categorias Acelerator: Alt + F4 icon: Salir.png mnemonic: s text: Salir icon: Galaxia.jpg

MnuRegistrarUsuario

MnuConsultarCategorias

MnuSalir LblFondo

Importe las clases que sern usadas en el proyecto, luego agregue las variables globales necesarias y luego modifique el constructor de la clase. Para ello agregue el cdigo que esta en negrita.
package Registrar_Datos; import javax.swing.UIManager; import javax.swing.ImageIcon; import java.awt.Rectangle; import java.util.Vector; public class JFrameMDI extends javax.swing.JFrame { static int w=640, h=480; static int w_screen; static int h_screen; //Categorias usadas en los cuadros de dilogo static String [] Lista_Categoria = {"","VIP","Premium","Normal"}; //Almacena los Clientes Registrados static Vector TC = new Vector(); public JFrameMDI() { //Captura el ancho y alto de la pantalla w_screen = getToolkit().getScreenSize().width; h_screen = getToolkit().getScreenSize().height; initComponents(); //Crea y asigna un icono al Formulario ImageIcon image = new ImageIcon(getClass().getResource("/Imagenes/Cabeza.png")); setIconImage(image.getImage()); //Establece el tamao, ubicacin y estado al Frame setSize(w,h); setLocation((w_screen-w)/2,(h_screen-h)/2); setExtendedState(this.MAXIMIZED_BOTH); //Crea una dimensin y las asigna a los componentes del Fondo Rectangle Dimension = new Rectangle(0, 0,w_screen , h_screen); DskFondo.setBounds(Dimension); DskFondo.setOpaque(false); LblFondo.setBounds(Dimension); }

________________________________________________________________________________ 2 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur

EAP Ingeniera de Sistemas

Programe la accin del control MnuRegistrarUsuario. Clic derecho sobre el objeto, Events (Eventos), Action, ActionPerformed.
private void MnuRegistrarUsuarioActionPerformed(java.awt.event.ActionEvent evt) { //Crea un nuevo cuadro de dilogo en forma MODAL JDialogCliente Dialogo = new JDialogCliente(this,true); //Configura su localizacin y habilita su visibilidad; Dialogo.setLocationRelativeTo(this); Dialogo.setVisible(true); }

Programe la accin del control MnuConsultarCategorias. Clic derecho sobre el objeto, Events (Eventos), Action, ActionPerformed.
private void MnuConsultarCategoriasActionPerformed(java.awt.event.ActionEvent evt) { //Crea un nuevo cuadro de dilogo en forma MODAL JDialogConsulta Dialogo = new JDialogConsulta(this,true); //Configura su localizacin y habilita su visibilidad; Dialogo.setLocationRelativeTo(this); Dialogo.setVisible(true); }

Programe la accin del control MnuSalir. Clic derecho sobre el objeto, Events (Eventos), Action, ActionPerformed.
private void MnuSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }

Modifique el mtodo main para que pueda cambiar el estilo de la UI Look and Feel. Para ello agregue el cdigo que esta en negrita.
public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { //Instruccin para la captura y control de excepciones try { //Configura el Skin de la aplicacin UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel"); } catch (Exception e) { e.printStackTrace(); } new JFrameMDI().setVisible(true); } }); }

JDialogCliente

TabOpciones (JTabbedPane)

________________________________________________________________________________ 3 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur


Estructura del Cuadro de Dilogo JDialogCliente Control JDialog TabOpciones Panel_Registrar Panel_Datos LblNombres

EAP Ingeniera de Sistemas

Propiedad defaultcloseOperation: DISPOSE title: Registro de Clientes resizable:false Configrelo con 2 etiquetas Ttulo de Pestaa: Registrar cono de Pestaa: Registrar.png border: (TitledBorder) Datos del Cliente displayedMnemonic: n labelFor: TxtNombres text: Nombres (*): displayedMnemonic: a labelFor: TxtApellidos text: Apellidos (*): displayedMnemonic: e labelFor: SpnEdad text: Edad (*): displayedMnemonic: s labelFor: RbtMasculino text: Sexo: displayedMnemonic: g labelFor: CboCategoria text: Categora (*): Mantener sus propiedades por defecto mnemonic: c selected: true text: Masculino mnemonic: c selected: false text: Femenino layout: (GridLayout) filas: 4 separacin:5 icon: Usuario.png mnemonic: u text: Nuevo icon: Agregar.png mnemonic: a text: Agregar icon: Reinicializar.png mnemonic: t text: Actualizar icon: Cancelar.png mnemonic: c text: Cancelar Ttulo de Pestaa: Listado cono de Pestaa: Listar.png background: Blanco text: Total Registrados: 0 layout: (GridLayout) columnas: 2 separacin:5 icon: Editar.png mnemonic: e text: Editar icon: Remover.png mnemonic: m text: Eliminar mnemonic: r text: Cerrar

LblApellidos

LblEdad

LblSexo

LblCategoria TxtNombres, TxtApellidos, SpnEdad, CboCategoria RbtMasculino

buttonGroup: GrupoSexo

RbtFemenino Panel_Botones_Registrar BtnNuevo

BtnAgregar

BtnActualizar

enabled: false

BtnCancelar Panel_Listado LblTotal Panel_Botones_Listar BtnEditar

BtnEliminar BtnCerrar

________________________________________________________________________________ 4 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur

EAP Ingeniera de Sistemas

Importe las clases que sern usadas en el proyecto, luego agregue las variables globales y despus modifique al constructor de la clase JDialogCliente. Para ello agregue el cdigo que esta en negrita.
package Registrar_Datos; import javax.swing.table.DefaultTableModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JOptionPane; import java.util.Vector; import javax.swing.ImageIcon; public class JDialogCliente extends javax.swing.JDialog { //Crea un Modelo de Tabla y 2 variables para el manejar los datos de la tabla DefaultTableModel modTabla; DefaultComboBoxModel modCombo; //Crea las variables para la creacin de la tabla String [] Cabecera = {"Nombres","Apellidos","Edad","Sexo","Categora"}; String [][] Contenido = {}; public JDialogCliente(java.awt.Frame parent, boolean modal) { //Invoca a la clase superior e inicializa los componentes super(parent, modal); initComponents(); //Crea y asigna un icono al Cuadro de Dilogo ImageIcon image = new ImageIcon(getClass().getResource("/Imagenes/Registrar.png")); setIconImage(image.getImage()); //Crea los modelos de tabla y de ComboBox modTabla = new DefaultTableModel(Contenido,Cabecera); modCombo = new DefaultComboBoxModel(JFrameMDI.Lista_Categoria); //Asigna los modelos de Tabla y de ComboBox TblCliente.setModel(modTabla); CboCategoria.setModel(modCombo); //Posiciona el enfoque TxtNombres.requestFocus(); //Carga los datos almacenados en memoria Cargar_Datos(); }

Agregue el mtodo Actualizar_Total() para que permita mostrar cuantos registros se tienen almacenados
void Actualizar_Total() { //Actualiza la cantidad de Clientes Registrados LblTotal.setText("Total Registrados: " + TblCliente.getRowCount()); }

Agregue el mtodo Cargar_Datos() para que permita recuperar los datos que se encuentran almacenados en la memoria.
void Cargar_Datos() { //Obtiene el total de elementos del Vector int NumReg = JFrameMDI.TC.size(); //Recorre todo el vector for(int i=0; i <NumReg ; i++) { //Recupera un objeto del vector y lo almacena en la variable Vector Registro = (Vector)JFrameMDI.TC.elementAt(i); //Agrega el Registro al modelo de la tabla y actualiza los totales modTabla.addRow(Registro); Actualizar_Total(); } }

Agregue el mtodo Guardar_Datos() para que permita almacenar los datos en la memoria.
void Guardar_Datos() { //Transfiere el contenido de la tabla al vector JFrameMDI.TC = modTabla.getDataVector(); }

________________________________________________________________________________ 5 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur


void setNombre(String Nombre) { TxtNombres.setText(Nombre); } String getNombre() { return TxtNombres.getText(); } void setApellido(String Apellido) { TxtApellidos.setText(Apellido); } String getApellido() { return TxtApellidos.getText(); } void setEdad(Object Edad) { SpnEdad.setValue(Edad); } int getEdad() { return Integer.parseInt(SpnEdad.getValue().toString()); } void setSexo(String Sexo) { if(Sexo.equalsIgnoreCase("Masculino")) { RbtMasculino.setSelected(true); } else { RbtFemenino.setSelected(true); } } String getSexo() { if(RbtMasculino.isSelected()) { return "Masculino"; } else { return "Femenino"; } } void setCategoria(String Categoria) { CboCategoria.setSelectedItem(Categoria); } String getCategoria() { return CboCategoria.getSelectedItem().toString(); }

EAP Ingeniera de Sistemas

Agregue los siguientes mtodos para almacenar y recuperar los datos desde los controles.

Agregue el mtodo Estado() para que permita habilitar o deshabilitar los controles.
void Estado(boolean e) { BtnNuevo.setEnabled(!e); BtnAgregar.setEnabled(!e); BtnActualizar.setEnabled(e); BtnCancelar.setEnabled(e); TabOpciones.setEnabledAt(1,!e); }

________________________________________________________________________________ 6 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur

EAP Ingeniera de Sistemas

Agregue el mtodo validar() para que permita evaluar si se han completado los datos y as devolver true o false segn este anlisis.
Boolean Validar() { if(TxtNombres.getText().equals("")) { TxtNombres.requestFocus(); return false; } else if (TxtApellidos.getText().equals("")) { TxtApellidos.requestFocus(); return false; } else if (SpnEdad.getValue().toString().equals("0")) { SpnEdad.requestFocus(); return false; } else if (CboCategoria.getSelectedItem().equals("")) { CboCategoria.requestFocus(); return false; } return true; }

Agregue el mtodo Limpiar() para que permita que los controles vuelvan a su estado inicial
void Limpiar() { TxtNombres.setText(""); TxtApellidos.setText(""); SpnEdad.setValue(0); RbtMasculino.setSelected(true); CboCategoria.setSelectedIndex(0); TxtNombres.requestFocus(); }

Agregue el mtodo Agregar() para que permita registrar en el JTabbedPane los datos ingresados
void Agregar() { if(Validar()==true) { //Coloca los datos en un Registro Object[] Registro = {getNombre(),getApellido(),getEdad(),getSexo(),getCategoria()}; //Agrega el Registro al modelo de la tabla y actualiza el total modTabla.addRow(Registro); Actualizar_Total(); //Limpia los controles Limpiar(); } else { JOptionPane.showMessageDialog(this, "Complete los datos marcados con (*)"); } }

Agregue el mtodo Editar() para que permita recuperar los datos desde el registro seleccionado en el JTabbedPane para poder editarlos
void Editar() { //Obtiene el nmero de filas seleccionadas int Filas = TblCliente.getSelectedRowCount(); if(Filas==0) { JOptionPane.showMessageDialog(this, "Debe de Seleccionar una Fila"); } else { //Obtiene la fila seleccionada int Fila = TblCliente.getSelectedRow(); //Obtiene los valores de la tabla y los coloca para edicin setNombre(TblCliente.getValueAt(Fila, 0).toString()); setApellido(TblCliente.getValueAt(Fila, 1).toString()); setEdad(TblCliente.getValueAt(Fila, 2));

________________________________________________________________________________ 7 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur


setSexo(TblCliente.getValueAt(Fila, 3).toString()); setCategoria(TblCliente.getValueAt(Fila, 4).toString()); //Selecciona el Tab "Registrar" TabOpciones.setSelectedIndex(0); //Ubica el enfoque en el control TxtNombres.requestFocus(); //Cambia el estado de los controles Estado(true); } }

EAP Ingeniera de Sistemas

Agregue el mtodo Actualizar() para que permita actualizar los datos en el JTabbedPane
void Actualizar() { //Coloca los datos en un Registro Object[] Registro = {getNombre(),getApellido(),getEdad(),getSexo(),getCategoria()}; //Obtiene la fila seleccionada int Fila = TblCliente.getSelectedRow(); //Elimina la fila anterior modTabla.removeRow(Fila); //Inserta los nuevos datos al modelo de la tabla modTabla.insertRow(Fila, Registro); //Actualiza el total de registros Actualizar_Total(); //Limpia los controles Limpiar(); //Cambia el estado de los controles Estado(false); }

Agregue el mtodo Cancelar() para que permita cancelar el proceso de edicin


void Cancelar() { //Limpia los controles Limpiar(); //Cambia el estado de los controles Estado(false); //Activa el tab "Listado" TabOpciones.setSelectedIndex(1); }

Agregue el mtodo Eliminar() para que permita eliminar el registro seleccionado


void Eliminar() { //Obtiene el nmero de registros seleccionados int Filas = TblCliente.getSelectedRowCount(); if(Filas==0) { JOptionPane.showMessageDialog(this, "Debe de Seleccionar una Fila"); } else { //Pide confirmacin para eliminar el registro int Rpta = JOptionPane.showConfirmDialog(this, "Desea Eliminar el Registro?...", "Confirmacin de Eliminacin", JOptionPane.YES_NO_OPTION); //Si se puls "Si" entonces Rpta contiene 0 if(Rpta==0) { //Obtiene la fila seleccionada int Fila = TblCliente.getSelectedRow(); //Elimina la fila anterior modTabla.removeRow(Fila); //Actualiza el total de registros Actualizar_Total(); } } }

________________________________________________________________________________ 8 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur

EAP Ingeniera de Sistemas

Programe la accin de los botones Clic derecho sobre el objeto, Events (Eventos), Action, ActionPerformed.
private void BtnCerrarActionPerformed(java.awt.event.ActionEvent evt) { Guardar_Datos(); dispose(); } private void BtnNuevoActionPerformed(java.awt.event.ActionEvent evt) { Limpiar(); } private void BtnAgregarActionPerformed(java.awt.event.ActionEvent evt) { Agregar(); } private void BtnEditarActionPerformed(java.awt.event.ActionEvent evt) { Editar(); } private void BtnActualizarActionPerformed(java.awt.event.ActionEvent evt) { Actualizar(); } private void BtnCancelarActionPerformed(java.awt.event.ActionEvent evt) { Cancelar(); } private void BtnEliminarActionPerformed(java.awt.event.ActionEvent evt) { Eliminar(); }

JDialogConsulta

LblItems Borde Inferior (South Border)

Estructura del Cuadro de Dilogo JDialogCliente Control JDialog Propiedad defaultcloseOperation: DISPOSE title: Consultar Categoras resizable:true background: negro foreground: blanco text: Total Items

LblItems

Importe las clases que sern usadas en el proyecto, luego agregue las variables globales y despus modifique al constructor de la clase JDialogConsulta. Para ello agregue el cdigo que esta en negrita.
package Registrar_Datos; import javax.swing.tree.DefaultMutableTreeNode; import java.util.Vector; import javax.swing.JTree; import javax.swing.JScrollPane; import java.awt.Dimension; public class JDialogConsulta extends javax.swing.JDialog { //Recupera la Lista de Categorias String [] Categorias = JFrameMDI.Lista_Categoria; //Recupera la Tabla de Clientes Vector Tabla = JFrameMDI.TC; //Crea el rbol DefaultMutableTreeNode raiz = Crear_Arbol(); //Objetos para el rbol JScrollPane Panel_Arbol; JTree Arbol; public JDialogConsulta(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents();

________________________________________________________________________________ 9 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Universidad Nacional Tecnolgica del Cono Sur


//Crea el objeto a partir del nodoRaiz Arbol = new JTree(raiz); //Crea un Panel, configura sus dimensiones y lo agrega //al cuadro de dilogo Panel_Arbol = new JScrollPane(Arbol); Dimension Area = new Dimension(400,300); Panel_Arbol.setPreferredSize(Area); add(Panel_Arbol); LblItems.setText("Total Items: " + Tabla.size()); //Ajusta el Tamao del Cuadro de Dilogo pack(); }

EAP Ingeniera de Sistemas

Agregue el mtodo Crear_Arbol() para que permita organizar los datos dentro de un rbol de nodos
private DefaultMutableTreeNode Crear_Arbol() { //Crea el nodo Raiz DefaultMutableTreeNode nodo = new DefaultMutableTreeNode("Categoras"); //Variable para crear los nodo hijos DefaultMutableTreeNode hijo; //Crea los nodos con cada categoria for(int i=1; i < Categorias.length ; i++) { hijo = Crear_Rama(Categorias[i],Tabla); nodo.add(hijo); } //Retorna el nodo con toda la estructura del arbol return nodo; }

Agregue el mtodo CrearRama() para que permita organizar los datos de cada rama del rbol.
private DefaultMutableTreeNode Crear_Rama(String Nombre, Vector Tabla) { //Crea el nodo Raiz DefaultMutableTreeNode nodo = new DefaultMutableTreeNode(Nombre); //Variable para crear los nodo hijos DefaultMutableTreeNode hijo; //Construye la rama for(int i=0; i<Tabla.size(); i++) { //Recupera un objeto del vector y lo almacena en la variable Vector Registro = (Vector)Tabla.elementAt(i); //Variable con los datos del Cliente String Cliente = Registro.elementAt(1) + ", " + Registro.elementAt(0); if (Registro.elementAt(4).equals(Nombre)) { hijo= new DefaultMutableTreeNode(Cliente); nodo.add(hijo); } } //Retorna el nodo con toda la estructura de la rama return nodo; }

Ejercicio 2: A la aplicacin anterior le hace falta el siguiente cdigo: Agregar en el cuadro de dilogo Registro de Clientes una tercera ficha en donde se muestren los datos organizados por el sexo a travs de un control JTree. Eliminar un registro desde el cuadro de Dilogo Consulta de Categoras Crear un nuevo cuadro de dilogo desde donde se puedan administrar las categoras. Es decir, Agregar, Modificar y Eliminar. Tome como modelo al cuadro de dilogo Registro de Clientes.

________________________________________________________________________________ 10 Lenguaje de Programacin I Ing. CIP Pierre Paul Loncn Salazar

Vous aimerez peut-être aussi