{"id":120,"date":"2016-11-01T02:00:09","date_gmt":"2016-11-01T02:00:09","guid":{"rendered":"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/?page_id=120"},"modified":"2025-10-27T03:51:02","modified_gmt":"2025-10-27T03:51:02","slug":"agenda-telefonica-con-archivo-csv","status":"publish","type":"page","link":"https:\/\/profeluismitre.com.mx\/Ejemplos\/?page_id=120","title":{"rendered":"Agenda Telef\u00f3nica con Archivo CSV"},"content":{"rendered":"<p style=\"text-align: center;\">@Autor: Prof. Luis Mitre<\/p>\n<p style=\"text-align: center;\">Esta Practica es una Agenda Telef\u00f3nica que almacena la informaci\u00f3n en\u00a0un <strong>archivo CSV<\/strong><\/p>\n<p style=\"text-align: left;\"><strong>Paso 1.\u00a0<\/strong>Creamos un nuevo Proyecto java dando Click en File-New-Java Proyect en Eclipse.<\/p>\n<p style=\"text-align: left;\"><strong>Paso 2.\u00a0<\/strong>Creamos los Paquetes Modelo, Vista y Controlador en el Proyecto creado.<\/p>\n<p style=\"text-align: center;\"><strong>Iniciaremos creando la parte visual de nuestro Proyecto.<\/strong><\/p>\n<p style=\"text-align: left;\"><strong>Paso 3.\u00a0<\/strong>Creamos la Clase <strong>PanelLogin\u00a0<\/strong>\u00a0en el paquete de <strong>vista<\/strong> en la cual Extenderemos (Heradaremos) dela Clase JPanel para que la clase se comporte como un contenedor quedando:<\/p>\n<pre class=\"lang:java decode:true \">public class PanelLogin extends JPanel{\n}<\/pre>\n<p><strong>Paso 4:\u00a0<\/strong>ahora creamos los componentes que necesitaremos en esta ventana, considerando que en esta ventana incluiremos un nuevo componente para el uso de las contrase\u00f1as..<\/p>\n<pre class=\"lang:java decode:true \">        JLabel lblUsuario=new JLabel(\"Usuario:\");\n\tJLabel lblPass=new JLabel(\"Constrase\u00f1a\");\n\tpublic JTextField txtUsuario=new JTextField();\n\tpublic JPasswordField txtPass=new JPasswordField();\n\tpublic JButton btnLogin=new JButton(\"LOGIN\");<\/pre>\n<p><strong>Paso 5:\u00a0<\/strong>Creamos el Constructor de la clase para empezar a armar nuestra ventana asignando el sistema de ordenamiento a travez de <strong>setLayout(null),\u00a0<\/strong>que indica que usaremos coordenadas:<\/p>\n<pre class=\"lang:java decode:true\">public PanelLogin(){\n\t\tsetLayout(null);\n\t\tlblUsuario.setBounds(150,200,100,30);\n\t\tlblUsuario.setForeground(new Color(255,0,0));\n\t\tlblUsuario.setFont(new Font(\"Arial\", 1,20));\n\t\tlblPass.setBounds(120,240,140,30);\n\t\tlblPass.setForeground(new Color(255,0,0));\n\t\tlblPass.setFont(new Font(\"Arial\", 1,20));\n\t\ttxtUsuario.setBounds(250,200,100,30);\n\t\ttxtPass.setBounds(250,240,100,30);\n\t\tbtnLogin.setBounds(200,290,100,30);\n\t\tadd(lblUsuario);\n\t\tadd(lblPass);\n\t\tadd(txtUsuario);\n\t\tadd(txtPass);\n\t\tadd(btnLogin);\n\t}<\/pre>\n<p>La ventana se vera Asi, una vez ya corriendo el programa:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-123 size-medium\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda1-293x300.png\" alt=\"agenda1\" width=\"293\" height=\"300\" \/><\/a><\/p>\n<p><strong>Paso 6: \u00a0<\/strong>Ahora creamos la clase PanelAltas, usando el mismo procedimiento:<\/p>\n<ol>\n<li style=\"text-align: left;\">Creamos los objetos necesarios<\/li>\n<li style=\"text-align: left;\">Creamos el constructor y agregamos coordenadas<\/li>\n<li style=\"text-align: left;\">agregamos los componentes al contenedor.<\/li>\n<\/ol>\n<pre class=\"lang:java decode:true \">public class PanelAltas extends JPanel{\n\tpublic JLabel lblTitulo=new JLabel(\"ALTAS\");\n\tpublic JLabel lblNombre=new JLabel(\"Nombre\");\n\tpublic JLabel lblApellido=new JLabel(\"Apellido\");\n\tpublic JLabel lblTelefono=new JLabel(\"Telefono\");\n\tpublic JLabel lblCorreo=new JLabel(\"Correo\");\n\tpublic JLabel lblFace=new JLabel(\"Facebook\");\n\tpublic JLabel lblTwitter=new JLabel(\"Twitter\");\n\tpublic JLabel lblInstagram=new JLabel(\"Instagram\");\n\tpublic JTextField txtNombre=new JTextField();\n\tpublic JTextField txtApellido=new JTextField();\n\tpublic JTextField txtTelefono=new JTextField();\n\tpublic JTextField txtCorreo=new JTextField();\n\tpublic JTextField txtFacebook=new JTextField();\n\tpublic JTextField txtTwitter=new JTextField();\n\tpublic JTextField txtInstagram=new JTextField();\n\tpublic JButton btnCancelar=new JButton(\"Cancelar\");\n\tpublic JButton btnGrabar=new JButton(\"Grabar\");\n\tpublic JLabel lblFoto=new JLabel(\"Foto Aqui\");\n\tBorder marco = BorderFactory.createLineBorder(Color.BLUE, 5);\n\tpublic ImageIcon foto;\n\t\n\tpublic PanelAltas(){\n\t\tsetLayout(null);\n\t\tlblTitulo.setBounds(200,20,100,50);\n\t\tlblTitulo.setFont(new Font(\"Arial\", 1, 25));\n\t\tlblFoto.setBorder(marco);\n\t\tlblFoto.setHorizontalAlignment(JLabel.CENTER);\n\t\tlblFoto.setBounds(230,80,200,200);\n\t\t\n\t\tlblNombre.setBounds(30,80,80,30);\n\t\tlblApellido.setBounds(30,120,80,30);\n\t\tlblTelefono.setBounds(30,160,80,30);\n\t\tlblCorreo.setBounds(30,200,80,30);\n\t\tlblFace.setBounds(30,240,80,30);\n\t\tlblTwitter.setBounds(30,280,80,30);\n\t\tlblInstagram.setBounds(30,320,80,30);\n\t\ttxtNombre.setBounds(110,80,100,30);\n\t\ttxtApellido.setBounds(110,120,100,30);\n\t\ttxtTelefono.setBounds(110,160,100,30);\n\t\ttxtCorreo.setBounds(110,200,100,30);\n\t\ttxtFacebook.setBounds(110,240,100,30);\n\t\ttxtTwitter.setBounds(110,280,100,30);\n\t\ttxtInstagram.setBounds(110,320,100,30);\n\t\tbtnCancelar.setBounds(75,370,100,50);\n\t\tbtnGrabar.setBounds(225,370,100,50);\n\t\tadd(lblTitulo);\n\t\tadd(lblNombre);\n\t\tadd(lblApellido);\n\t\tadd(lblTelefono);\n\t\tadd(lblCorreo);\n\t\tadd(lblFace);\n\t\tadd(lblTwitter);\n\t\tadd(lblInstagram);\n\t\tadd(txtNombre);\n\t\tadd(txtApellido);\n\t\tadd(txtTelefono);\n\t\tadd(txtFacebook);\n\t\tadd(txtCorreo);\n\t\tadd(txtTwitter);\n\t\tadd(txtInstagram);\n\t\tadd(btnCancelar);\n\t\tadd(btnGrabar);\n\t\tadd(lblFoto);\n\t\t\n\t}\n}<\/pre>\n<p>La ventana se vera de la siguiente manera:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-124 size-medium\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda2-295x300.png\" alt=\"agenda2\" width=\"295\" height=\"300\" \/><\/a><\/p>\n<p>Paso 7: Ahora creamos la Clase PanelBajas que al igual que la clase altas realizamos el mismo procedimiento.<\/p>\n<p><strong>nota:\u00a0<\/strong>En esta clase agregamos un nuevo elemento que es el bot\u00f3n para buscar..<\/p>\n<pre class=\"lang:java decode:true \">public class PanelBajas extends JPanel {\n\tpublic JLabel lblTitulo=new JLabel(\"BAJAS\");\n\tpublic JLabel lblNombre=new JLabel(\"Nombre\");\n\tpublic JLabel lblApellido=new JLabel(\"Apellido\");\n\tpublic JLabel lblTelefono=new JLabel(\"Telefono\");\n\tpublic JLabel lblCorreo=new JLabel(\"Correo\");\n\tpublic JLabel lblFace=new JLabel(\"Facebook\");\n\tpublic JLabel lblTwitter=new JLabel(\"Twitter\");\n\tpublic JLabel lblInstagram=new JLabel(\"Instagram\");\n\tpublic JTextField txtNombre=new JTextField();\n\tpublic JTextField txtApellido=new JTextField();\n\tpublic JTextField txtTelefono=new JTextField();\n\tpublic JTextField txtCorreo=new JTextField();\n\tpublic JTextField txtFacebook=new JTextField();\n\tpublic JTextField txtTwitter=new JTextField();\n\tpublic JTextField txtInstagram=new JTextField();\n\tpublic JButton btnCancelar=new JButton(\"Cancelar\");\n\tpublic JButton btnGrabar=new JButton(\"Eliminar\");\n\tpublic JButton btnBuscar=new JButton(\"Buscar\");\n\tpublic JLabel lblFoto=new JLabel(\"Foto Aqui\");\n\tBorder marco = BorderFactory.createLineBorder(Color.BLUE, 5);\n\tpublic ImageIcon foto;\n\t\n\tpublic PanelBajas(){\n\t\tbtnGrabar.setEnabled(false);\n\t\tsetLayout(null);\n\t\tlblTitulo.setBounds(200,20,100,50);\n\t\tlblTitulo.setFont(new Font(\"Arial\", 1, 25));\n\t\tlblFoto.setBorder(marco);\n\t\tlblFoto.setHorizontalAlignment(JLabel.CENTER);\n\t\tlblFoto.setBounds(230,130,200,200);\n\t\t\n\t\tlblTelefono.setBounds(30,80,80,30);\n\t\ttxtTelefono.setBounds(110,80,100,30);\n\t\tbtnBuscar.setBounds(240,80,100,30);\n\t\t\n\t\t\n\t\tlblNombre.setBounds(30,120,80,30);\n\t\tlblApellido.setBounds(30,160,80,30);\t\t\n\t\tlblCorreo.setBounds(30,200,80,30);\n\t\tlblFace.setBounds(30,240,80,30);\n\t\tlblTwitter.setBounds(30,280,80,30);\n\t\tlblInstagram.setBounds(30,320,80,30);\n\t\t\n\t\ttxtNombre.setBounds(110,120,100,30);\n\t\ttxtApellido.setBounds(110,160,100,30);\t\t\n\t\ttxtCorreo.setBounds(110,200,100,30);\n\t\ttxtFacebook.setBounds(110,240,100,30);\n\t\ttxtTwitter.setBounds(110,280,100,30);\n\t\ttxtInstagram.setBounds(110,320,100,30);\n\t\tbtnCancelar.setBounds(75,370,100,50);\n\t\tbtnGrabar.setBounds(225,370,100,50);\n\t\ttxtNombre.setEditable(false);\n\t\ttxtApellido.setEditable(false);\n\t\ttxtCorreo.setEditable(false);\n\t\ttxtFacebook.setEditable(false);\n\t\ttxtTwitter.setEditable(false);\n\t\ttxtInstagram.setEditable(false);\n\t\tadd(lblTitulo);\n\t\tadd(lblNombre);\n\t\tadd(lblApellido);\n\t\tadd(lblTelefono);\n\t\tadd(lblCorreo);\n\t\tadd(lblFace);\n\t\tadd(lblTwitter);\n\t\tadd(lblInstagram);\n\t\tadd(txtNombre);\n\t\tadd(txtApellido);\n\t\tadd(txtTelefono);\n\t\tadd(txtFacebook);\n\t\tadd(txtCorreo);\n\t\tadd(txtTwitter);\n\t\tadd(txtInstagram);\n\t\tadd(btnCancelar);\n\t\tadd(btnGrabar);\n\t\tadd(lblFoto);\n\t\tadd(btnBuscar);\n\t\t\n\t}\n}<\/pre>\n<p>La ventana se vera Asi:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-125 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda3-293x300.png\" alt=\"agenda3\" width=\"293\" height=\"300\" \/><\/a><\/p>\n<p><strong>Paso 8:\u00a0<\/strong>Continuamos con la Clase PanelCambios:<\/p>\n<pre class=\"lang:java decode:true\">public class PanelCambios extends JPanel {\n\tpublic JLabel lblTitulo=new JLabel(\"CAMBIOS\");\n\tpublic JLabel lblNombre=new JLabel(\"Nombre\");\n\tpublic JLabel lblApellido=new JLabel(\"Apellido\");\n\tpublic JLabel lblTelefono=new JLabel(\"Telefono\");\n\tpublic JLabel lblCorreo=new JLabel(\"Correo\");\n\tpublic JLabel lblFace=new JLabel(\"Facebook\");\n\tpublic JLabel lblTwitter=new JLabel(\"Twitter\");\n\tpublic JLabel lblInstagram=new JLabel(\"Instagram\");\n\tpublic JTextField txtNombre=new JTextField();\n\tpublic JTextField txtApellido=new JTextField();\n\tpublic JTextField txtTelefono=new JTextField();\n\tpublic JTextField txtCorreo=new JTextField();\n\tpublic JTextField txtFacebook=new JTextField();\n\tpublic JTextField txtTwitter=new JTextField();\n\tpublic JTextField txtInstagram=new JTextField();\n\tpublic JButton btnCancelar=new JButton(\"Cancelar\");\n\tpublic JButton btnGrabar=new JButton(\"Grabar\");\n\tpublic JButton btnBuscar=new JButton(\"Buscar\");\n\tpublic JLabel lblFoto=new JLabel(\"Foto Aqui\");\n\tBorder marco = BorderFactory.createLineBorder(Color.BLUE, 5);\n\tpublic ImageIcon foto;\n\t\n\tpublic PanelCambios(){\n\t\tsetLayout(null);\n\t\tlblTitulo.setBounds(180,20,200,50);\n\t\tlblTitulo.setFont(new Font(\"Arial\", 1, 25));\n\t\tlblFoto.setBorder(marco);\n\t\tlblFoto.setHorizontalAlignment(JLabel.CENTER);\n\t\tlblFoto.setBounds(230,130,200,200);\n\t\t\n\t\tlblTelefono.setBounds(30,80,80,30);\n\t\ttxtTelefono.setBounds(110,80,100,30);\n\t\tbtnBuscar.setBounds(240,80,100,30);\n\t\t\n\t\t\n\t\tlblNombre.setBounds(30,120,80,30);\n\t\tlblApellido.setBounds(30,160,80,30);\t\t\n\t\tlblCorreo.setBounds(30,200,80,30);\n\t\tlblFace.setBounds(30,240,80,30);\n\t\tlblTwitter.setBounds(30,280,80,30);\n\t\tlblInstagram.setBounds(30,320,80,30);\n\t\t\n\t\ttxtNombre.setBounds(110,120,100,30);\n\t\ttxtApellido.setBounds(110,160,100,30);\t\t\n\t\ttxtCorreo.setBounds(110,200,100,30);\n\t\ttxtFacebook.setBounds(110,240,100,30);\n\t\ttxtTwitter.setBounds(110,280,100,30);\n\t\ttxtInstagram.setBounds(110,320,100,30);\n\t\tbtnCancelar.setBounds(75,370,100,50);\n\t\tbtnGrabar.setBounds(225,370,100,50);\n\t\tadd(lblTitulo);\n\t\tadd(lblNombre);\n\t\tadd(lblApellido);\n\t\tadd(lblTelefono);\n\t\tadd(lblCorreo);\n\t\tadd(lblFace);\n\t\tadd(lblTwitter);\n\t\tadd(lblInstagram);\n\t\tadd(txtNombre);\n\t\tadd(txtApellido);\n\t\tadd(txtTelefono);\n\t\tadd(txtFacebook);\n\t\tadd(txtCorreo);\n\t\tadd(txtTwitter);\n\t\tadd(txtInstagram);\n\t\tadd(btnCancelar);\n\t\tadd(btnGrabar);\n\t\tadd(lblFoto);\n\t\tadd(btnBuscar);\n\t\t\n\t}\n}<\/pre>\n<p>La Ventana se Vera Asi:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-126 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda4-296x300.png\" alt=\"agenda4\" width=\"296\" height=\"300\" \/><\/a><\/p>\n<p><strong>Paso 9: <\/strong>Ahora la clase PanelConsultas:<\/p>\n<pre class=\"lang:java decode:true \">public class PanelConsultas extends JPanel {\n\tpublic JLabel lblTitulo = new JLabel(\"CONSULTAS\");\n\tpublic JLabel lblTelefono = new JLabel(\"Telefono\");\n\tpublic JTextField txtTelefono = new JTextField();\n\tpublic JTable tabla=new JTable();\n\tpublic JScrollPane jsp;\n\tpublic DefaultTableModel modeloTabla;\n\t\n\n\tpublic PanelConsultas() {\n\t\tsetLayout(null);\n\t\t\n\t\t\n\t\tmodeloTabla=new DefaultTableModel(){\n\t\t\tpublic boolean isCellEditable(int fila, int columna){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t\tmodeloTabla.addColumn(\"Nombre:\");\n\t\tmodeloTabla.addColumn(\"Apellido:\");\n\t\tmodeloTabla.addColumn(\"Telefono:\");\n\t\tmodeloTabla.addColumn(\"Correo:\");\n\t\tmodeloTabla.addColumn(\"Facebook\");\n\t\tmodeloTabla.addColumn(\"Twitter\");\n\t\tmodeloTabla.addColumn(\"Instagram\");\n\t\t\n\t\ttabla=new JTable(modeloTabla);\n\t\tjsp=new JScrollPane(tabla);\n\t\tjsp.setViewportView(tabla);\n\t\tlblTitulo.setBounds(160, 20, 200, 50);\n\t\tlblTitulo.setFont(new Font(\"Arial\", 1, 25));\n\t\tlblTelefono.setBounds(30,80,80,30);\n\t\ttxtTelefono.setBounds(110,80,100,30);\n\t\tjsp.setBounds(30,120,420,300);\n\t\t\n\t\t\n\t\tadd(lblTitulo);\n\t\tadd(lblTelefono);\n\t\tadd(txtTelefono);\n\t\tadd(jsp);\n\t\t\n\t}\n}<\/pre>\n<p>La ventana se vera asi:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-127 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda5-295x300.png\" alt=\"agenda5\" width=\"295\" height=\"300\" \/><\/a><\/p>\n<p><strong>Paso 10:\u00a0<\/strong>Ahora crearemos la Clase VentanaPrincipal que Heredara de la clase JFrame que sera nuestra ventana en donde insertaremos todas las anteriores es decir sera la plataforma donde correra nuestro programa:<\/p>\n<p><strong><span style=\"color: #ff0000;\">Nota: Dentro de esta clase insertamos la imagen de fondo del panel login, dentro de este codigo hay anotaciones donde inicia el codigo para este fin..<\/span><\/strong><\/p>\n<pre class=\"lang:java decode:true \">public class VentanaPrincipal extends JFrame{\n\tpublic PanelLogin panelLogin;\n\tpublic PanelAltas panelAltas=new PanelAltas();\n\tpublic PanelBajas panelBajas=new PanelBajas();\n\tpublic PanelCambios panelCambios=new PanelCambios();\n\tpublic PanelConsultas panelConsultas=new PanelConsultas();\n\t\n\tpublic JMenuBar barraMenu=new JMenuBar();\n\tpublic JMenu mnAdministracion=new JMenu(\"Administracion\");\n\tpublic JMenu mnAgenda=new JMenu(\"Agenda\");\n\tpublic JMenu mnUsuarios=new JMenu(\"Agenda\");\n\tpublic JMenuItem mnNuevoUser=new JMenuItem(\"Nuevo Usuario\");\n\tpublic JMenuItem mnEliminarUser=new JMenuItem(\"Eliminar Usuario\");\n\tpublic JMenu mnSesion=new JMenu(\"Sesion\");\n\tpublic JMenuItem mnCerrarSesion=new JMenuItem(\"Cerrar Sesion\");\n\tpublic JMenuItem mnAltas=new JMenuItem(\"Altas\");\n\tpublic JMenuItem mnBajas=new JMenuItem(\"Bajas\");\n\tpublic JMenuItem mnCambios=new JMenuItem(\"Cambios\");\n\tpublic JMenuItem mnConsultas=new JMenuItem(\"Consultas\");\n\t\n\tpublic JTabbedPane pestanas=new JTabbedPane(); \n\tpublic JPanel panelCarta=new JPanel();\n\tpublic CardLayout cartas=new CardLayout();\n\tImage imagen;\n\tpublic VentanaPrincipal(){\n\t\tsetLayout(new BorderLayout());\n\t\tpestanas.insertTab(\"Altas\",null,panelAltas,\"Altas\",0);\n\t\tpestanas.insertTab(\"Bajas\",null,panelBajas,\"Bajas\",1);\n\t\tpestanas.insertTab(\"Cambios\",null,panelCambios,\"Cambios\",2);\n\t\tpestanas.insertTab(\"Consultas\",null,panelConsultas,\"Consultas\",3);\n\t\t\n\t\tsetJMenuBar(barraMenu);\n\t\tbarraMenu.add(mnAdministracion);\n\t\tbarraMenu.add(mnAgenda);\n\t\t\n\t\tmnUsuarios.add(mnNuevoUser);\n\t\tmnUsuarios.add(mnEliminarUser);\n\t\tmnSesion.add(mnCerrarSesion);\n\t\t\n\t\tmnAdministracion.add(mnUsuarios);\n\t\tmnAdministracion.add(mnSesion);\n\t\t\n\t\tmnAgenda.add(mnAltas);\n\t\tmnAgenda.add(mnBajas);\n\t\tmnAgenda.add(mnCambios);\n\t\tmnAgenda.add(mnConsultas);\n\t\t\n\t\t\n\t\tbarraMenu.setVisible(false);\n\t\tmnAgenda.setEnabled(false);\n\t\tmnUsuarios.setEnabled(false);\n\t\t\n                \/**\n                * el codigo de a continuacion sirve para\n                * insertar una imagen de fondo,\n                * en este caso es el panel login\n                **\/ \n\t\tpanelLogin=new PanelLogin(){\n\t\t\tpublic void paintComponent(Graphics g){\n\t\t\t\tg.drawImage(imagen,0,0,\n\t\t\t\t\tthis.getWidth(),\n\t\t\t\t\tthis.getHeight(),null);\n\t\t\t}\n\t\t};\n\t\timagen=new ImageIcon(\".\/imagenes\/sepiente.jpg\").getImage();\n\t\trepaint();\n                \/\/fin del codigo de la imagen\n\t\tpanelCarta.setLayout(cartas);\n\t\tpanelCarta.add(panelLogin,\"login\");\n\t\tpanelCarta.add(pestanas,\"todo\");\n\t\t\n\t\t\n\t\t\n\t\tadd(panelCarta,BorderLayout.CENTER);\n\t\tsetSize(500,530);\n\t\tsetVisible(true);\n\t\tsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n\t}\n}<\/pre>\n<p style=\"text-align: center;\"><strong>Con esto hemos terminado por ahora la Parte Gr\u00e1fica\u00a0de nuestro sistema, a partir de este momento si creamos una clase auxiliar y creamos un objeto de la clase VentanaPrincipal miraremos nuestro programa corriendo, cabe mencionar\u00a0que no tendr\u00e1\u00a0todav\u00eda\u00a0ninguna acci\u00f3n.<\/strong><\/p>\n<p style=\"text-align: left;\">Ahora sera necesarios descargar el archivo que se encuentra en el siguiente link:\u00a0https:\/\/sourceforge.net\/projects\/javacsv\/<\/p>\n<p style=\"text-align: left;\">del cual descargaremos un Archivo Comprimido y Abriremos de preferencia con Winrar<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/archivo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-173 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/archivo.png\" alt=\"archivo\" width=\"226\" height=\"79\" \/><\/a><\/p>\n<p style=\"text-align: left;\">una vez abierto el archivo extraemos el archivo llamado javacsv.jar en cualquier lugar de nuestra maquina de preferencia dentro de la carpeta de trabajo de java<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/descomp.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-174 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/descomp-300x194.png\" alt=\"descomp\" width=\"407\" height=\"263\" \/><\/a><\/p>\n<p style=\"text-align: left;\">una vez que tengamos el archivo daremos clic derecho en el nombre del proyecto de java elegimos Configurar <strong>BuildPath-Configure BuildPath:<\/strong><\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/build.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-175 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/build-300x219.png\" alt=\"build\" width=\"300\" height=\"219\" \/><\/a><\/p>\n<p style=\"text-align: left;\">se abrir\u00e1 una ventana en la cual elegimos la pesta\u00f1a Libraries y elegimos el bot\u00f3n\u00a0<strong>Add External Jar&#8217;s y seleccionamos el archivo que descomprimimos y damos OK.<\/strong><\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/build2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-176 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/build2-300x226.png\" alt=\"build2\" width=\"300\" height=\"226\" \/><\/a><\/p>\n<p style=\"text-align: left;\"><span style=\"color: #0000ff;\">Ahora ya estamos Listo para continuar&#8230;.<\/span><\/p>\n<p><strong>Paso 11:<\/strong> Ahora crearemos la clase <strong>Contactos <\/strong>dentro del paquete <strong>modelo <\/strong>la cual ser\u00e1 necesario para crear objetos por cada contacto que utilizaremos, quedando de la siguiente manera:<\/p>\n<pre class=\"lang:java decode:true \">public class Contactos {\n\tpublic String nombre;\n\tpublic String apellido;\n\tpublic String telefono;\n\tpublic String correo;\n\tpublic String facebook;\n\tpublic String twitter;\n\tpublic String instagram;\n\tpublic String foto;\n\tpublic Contactos() {\n\n\t}\n\tpublic Contactos(String nombre, String apellido, \n\t\t\tString telefono, String correo, \n\t\t\tString facebook, String twitter, \n\t\t\tString instagram,String foto) {\n\t\tthis.nombre=nombre;\n\t\tthis.apellido=apellido;\n\t\tthis.telefono=telefono;\n\t\tthis.correo=correo;\n\t\tthis.facebook=facebook;\n\t\tthis.twitter=twitter;\n\t\tthis.instagram=instagram;\n\t\tthis.foto=foto;\n\t}\n\tpublic void setNombre(String nombre){\n\t\tthis.nombre=nombre;\n\t}\n\tpublic String getNombre(){\n\t\treturn nombre;\n\t}\n\tpublic void setApellido(String apellido){\n\t\tthis.apellido=apellido;\n\t\t\n\t}\n\tpublic void setTelefono(String telefono){\n\t\tthis.telefono=telefono;\n\t\t\n\t}\n\tpublic void setCorreo(String correo){\n\t\tthis.correo=correo;\n\t\t\n\t}\n\tpublic void setFacebook(String facebook){\n\t\tthis.facebook=facebook;\n\t\t\n\t}\n\tpublic void setTwitter(String twitter){\n\t\tthis.twitter=twitter;\n\t\t\n\t}\n\tpublic void setInstagram(String instagram){\n\t\tthis.instagram=instagram;\n\t\t\n\t}\n\tpublic void setFoto(String foto){\n\t\tthis.foto=foto;\n\t\t\n\t}\n\tpublic String getApellido(){\n\t\treturn apellido;\n\t}\n\tpublic String getTelefono(){\n\t\treturn telefono;\n\t}\n\tpublic String getCorreo(){\n\t\treturn correo;\n\t}\n\tpublic String getFacebook(){\n\t\treturn facebook;\n\t}\n\tpublic String getTwitter(){\n\t\treturn twitter;\n\t}\n\tpublic String getInstagram(){\n\t\treturn instagram;\n\t}\n\tpublic String getFoto(){\n\t\treturn foto;\n\t}\n\n}\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Paso 12:<\/strong> De la misma manera que el paso anterior crearemos la clase Usuarios dentro del paquete<strong> modelo<\/strong> que har\u00e1 lo mismo que contactos pero para usuarios:<\/p>\n<pre class=\"lang:java decode:true\">public class Usuarios {\n\tpublic String usuario;\n\tpublic String password;\n\tpublic String tipo;\n\tpublic Usuarios() {\t}\n\tpublic Usuarios(String usuario, String password, \n\t\t\tString tipo) {\n\t\tthis.usuario=usuario;\n\t\tthis.password=password;\n\t\tthis.tipo=tipo;\n\t}\n\tpublic String getUsuario(){\n\t\treturn usuario;\n\t}\n\tpublic void setUsuario(String usuario){\n\t\tthis.usuario=usuario;\n\t}\n\tpublic String getPassword(){\n\t\treturn password;\n\t}\n\tpublic void setPassword(String password){\n\t\tthis.password=password;\n\t}\n\tpublic String getTipo(){\n\t\treturn tipo;\n\t}\n\tpublic void setTipo(String tipo){\n\t\tthis.tipo=tipo;\n\t}\n} \n<\/pre>\n<p><strong>Paso 13:<\/strong> Procederemos a crear nuestra clase <strong>MODELO<\/strong> dentro del paquete del mismo nombre que ser\u00e1 en el cual pondremos todos los m\u00e9todos necesarios para poder escribir y leer al archivo de texto CSV.<\/p>\n<p><strong>Paso 14:<\/strong> Crearemos los objetos necesarios para poder trabar en esta clase:<\/p>\n<pre class=\"lang:java decode:true\">public class Modelo{\n        public String nombre;\n\tpublic String apellido;\n\tpublic String telefono;\n\tpublic String correo;\n\tpublic String facebook;\n\tpublic String twitter;\n\tpublic String instagram;\n\tpublic String foto;\n\tpublic String tipoUsuario = null;\n\tCsvReader lectura;\n\tCsvWriter escritura;\n\tArrayList&lt;Contactos&gt; contactosLista = new ArrayList&lt;Contactos&gt;();\n\tArrayList&lt;Usuarios&gt; usuariosLista = new ArrayList&lt;Usuarios&gt;();\n\n<\/pre>\n<p>Cabe mencionar que los objetos <strong>ArrayList<\/strong> son muy similares a un arreglo la diferencia es que estos almacenaran objetos del tipo Contactos y Usuarios respectivamente.<\/p>\n<p><strong>Paso 14:<\/strong> Crearemos nuestro primer m\u00e9todo que se llamara <strong>cargar() <\/strong>el cual tiene la funci\u00f3n de leer los archivos CSV crear objetos por cada contacto o usuario que encuentre en estos archivos y almacenarlos dentro de sus respectivos arreglos.<\/p>\n<pre class=\"lang:java decode:true\">public void cargar() {\n\t\t\/\/Primero eliminamos todo lo que tenga el array\n\t\t\/\/para evitar duplicados..\n\t\tusuariosLista.removeAll(usuariosLista);\t\t\n\t\ttry {\n\t\t\tlectura = new CsvReader(\".\/usuarios.csv\");\n\t\t\twhile (lectura.readRecord()) {\n\t\t\t\tusuariosLista.add(new Usuarios(lectura.get(0),                                          lectura.get(1),\n\t\t\t\t\t\tlectura.get(2)));\n\t\t\t}\n\t\t\tlectura.close();\t\t\t\n\t\tcontactosLista.removeAll(contactosLista);\n\t\t\tlectura=new CsvReader(\".\/contactos.csv\");\n\t\t\twhile(lectura.readRecord()){\n\t\t\t\tcontactosLista.add(\n\t\t\t\t\tnew Contactos(\tlectura.get(0), lectura.get(1),\n\t\t\t\t\t\tlectura.get(2),\tlectura.get(3),\n\t\t\t\t\t\tlectura.get(4),\tlectura.get(5),\n\t\t\t\t\t\tlectura.get(6),\tlectura.get(7)));\n\t\t\t}\n\t\t\tlectura.close();\n\t\t} catch (FileNotFoundException e) {\n\t\t\t\/\/ TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t} catch (IOException e) {\n\t\t\t\/\/ TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t} }\n<\/pre>\n<p><span style=\"color: #ff0000;\"><strong>Nota:<\/strong> estos archivos deber\u00e1n estar creados dentro de la carpeta del proyecto junto a las carpetas <strong>SRC <\/strong>y <strong>BIN <\/strong>y su Extencion es<strong> .csv<\/strong><\/span><\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/carpeta-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-182 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/carpeta-2.png\" alt=\"carpeta\" width=\"204\" height=\"180\" \/><\/a><\/p>\n<p><strong>Paso 15:<\/strong> ahora para que este m\u00e9todo funcione al momento que inicia nuestro programa crearemos un constructor el cual lo mande llamar:<\/p>\n<p><strong> \u00bfPor qu\u00e9 no ponemos el c\u00f3digo del m\u00e9todo cargar dentro del constructor \u00a1Mejor! ?<\/strong><\/p>\n<ul>\n<li style=\"text-align: left;\">Por que este m\u00e9todo lo utilizaremos en varias ocasiones y si lo ponemos en el constructor solo se utilizara una vez.<\/li>\n<\/ul>\n<pre class=\"lang:java decode:true \">public Modelo() {\n\t\tcargar();\n\t}\n<\/pre>\n<p><strong>Paso 16:<\/strong> ahora crearemos el m\u00e9todo <strong>login() <\/strong>\u00a0que ser\u00e1 el encargado de recibir el usuario y la contrase\u00f1a que el usuario del programa ingrese, y este m\u00e9todo verificara que exista dentro de los usuarios y si esto es correcto nos devolver\u00e1 una valor <strong>Verdadero<\/strong> o de lo contrario <strong>Falso:<\/strong><\/p>\n<pre class=\"lang:java decode:true \">public boolean login(String usuario, String pass) {\n\t\tboolean respuesta = false;\n\t\t\/\/este ciclo nos permitira buscar todos los usuarios\n\t\tfor (int x = 0; x &lt; usuariosLista.size(); x++) {\n\t\t\t\/\/Creamos un objeto del tipo usuarios para poder \n\t\t\t\/\/leer su informacion..\n\t\t\tUsuarios usuarios = usuariosLista.get(x);\n\t\t\tif (usuarios.getUsuario().equals(usuario)\n\t\t\t\t\t&amp;&amp; usuarios.getPassword().equals(pass)) {\n\t\t\t\trespuesta = true;\n\t\t\t\ttipoUsuario = usuarios.getTipo();\n\t\t\t}\n\t\t}\n\n\t\treturn respuesta;\n\t}\n<\/pre>\n<p><strong>Paso 17:<\/strong> \u00a0ahora crearemos dos m\u00e9todos uno llamado <strong>actualizar() <\/strong>y el otro <strong>actualizarUsuarios(), <\/strong>\u00a0los cuales son los encargados de estar escribiendo los cambios a los archivos CSV es decir si agregamos un nuevo contacto se encargara de escribirlo a este archivo o en su defecto lleg\u00e1ramos a eliminar un contacto o usuario estos m\u00e9todos tambi\u00e9n lo eliminaran de los archivos..<\/p>\n<p>Quedar\u00edan de la siguiente manera:<\/p>\n<pre class=\"lang:java decode:true \">public void actualizar(){\n\t\ttry{\n\t\tescritura=new CsvWriter(\".\/contactos.csv\");\n\t\tfor(int x=0;x&lt;contactosLista.size();x++){\n\t\t\tContactos contacto=contactosLista.get(x);\n\t\t\tescritura.write(contacto.getNombre());\n\t\t\tescritura.write(contacto.getApellido());\n\t\t\tescritura.write(contacto.getTelefono());\n\t\t\tescritura.write(contacto.getCorreo());\n\t\t\tescritura.write(contacto.getFacebook());\n\t\t\tescritura.write(contacto.getTwitter());\n\t\t\tescritura.write(contacto.getInstagram());\n\t\t\tescritura.write(contacto.getFoto());\n\t\t\tescritura.endRecord();\n\t\t}\n\t\tescritura.close();\n\t\t}catch(IOException e){\n\t\t\te.printStackTrace();\n\t\t}\n\t\t\n\t}\n\npublic void actualizarUsuarios(){\n\t\ttry{\n\t\t\tescritura=new CsvWriter(\".\/usuarios.csv\");\n\t\tfor(int x=0;x&lt;usuariosLista.size();x++){\n\t\t\tUsuarios user=usuariosLista.get(x);\n\t\t\tescritura.write(user.getUsuario());\n\t\t\tescritura.write(user.getPassword());\n\t\t\tescritura.write(user.getTipo());\n\t\t\tescritura.endRecord();\n\t\t}\n\t\tescritura.close();\t\n\t\t}catch(IOException e){\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n<\/pre>\n<p><strong>Paso 18:<\/strong> lo siguiente ser\u00eda crear los m\u00e9todos encargados de recibir la informaci\u00f3n del programa para sus acciones como Altas, Bajas, Cambios.<\/p>\n<p>Espesamos con Altas:<\/p>\n<pre class=\"lang:java decode:true \">public void altas(String nombre, String apellido, String telefono,\n\t\t\tString correo, String facebook, String twitter, String intagram,\n\t\t\tString foto) {\n\t\tcontactosLista.add(new Contactos(nombre, apellido, telefono, correo,\n\t\t\t\tfacebook, twitter, instagram, foto));\n\t\tactualizar();\n\t}\n<\/pre>\n<p>Ahora Bajas:<\/p>\n<pre class=\"lang:java decode:true\">public void bajas(String telefono){\n\t\tfor(int x=0; x&lt;contactosLista.size();x++){\n\t\t\tContactos contacto=contactosLista.get(x);\n\t\t\tif(contacto.getTelefono().equals(telefono));\n\t\t\tcontactosLista.remove(x);\n\t\t\tbreak;\n\t\t}\n\t\tactualizar();\n\t}\n<\/pre>\n<p>Y Cambios:<\/p>\n<pre class=\"lang:java decode:true\">public void cambios(String nombre, String apellido, \n\t\tString telefono, String correo, \n\t\tString facebook, String twitter, \n\t\tString intagram,String foto,String telModificar){\n\tfor(int x=0;x&lt;contactosLista.size();x++){\n\t\tContactos contact=contactosLista.get(x);\n\t\tif(contact.getTelefono().equals(telModificar)){\n\t\t\tcontact.setNombre(nombre);\n\t\t\tcontact.setApellido(apellido);\n\t\t\tcontact.setCorreo(correo);\n\t\t\tcontact.setFacebook(facebook);\n\t\t\tcontact.setTwitter(twitter);\n\t\t\tcontact.setInstagram(instagram);\n\t\t\tcontact.setFoto(foto);\n\t\t}\n\t}\n\tactualizar();\n}\n<\/pre>\n<p><strong>Paso 19:<\/strong> ahora crearemos un m\u00e9todo que nos permitir\u00e1 buscar a un contacto por su tel\u00e9fono, este nos servir\u00e1 para bajas y cambios ya que tendr\u00e1n esta funci\u00f3n:<\/p>\n<pre class=\"lang:java decode:true \">public boolean buscar(String telefono){\n\tboolean respuesta=false;\n\tfor(int x=0;x&lt;contactosLista.size();x++){\n\t\tContactos contact=contactosLista.get(x);\n\t\tif(contact.getTelefono().equals(telefono)){\n\t\tnombre=contact.getNombre();\n\t\tapellido=contact.getApellido();\n\t\tcorreo=contact.getCorreo();\n\t\tfacebook=contact.getFacebook();\n\t\ttwitter=contact.getTwitter();\n\t\tinstagram=contact.getInstagram();\n\t\tfoto=contact.getFoto();\n\t\trespuesta=true;\n\t\t}\n\t}\n\t\n\treturn respuesta;\n}\n<\/pre>\n<p>En este m\u00e9todo retorna un <strong>Verdadero<\/strong> o <strong>Falso <\/strong>dependiendo de si lo encontr\u00f3 de ser afirmativa la respuesta almacenara los valores dentro de las variables globales que creamos al principio de la clase Modelo, para poder acceder a estos valores desde la clase controlador:<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Paso 20:<\/strong> Ahora crearemos el m\u00e9todo <strong>consultas(), <\/strong>este m\u00e9todo a diferencia de los dem\u00e1s devuelve un objeto del tipo <strong>DefaultTableModel <\/strong>\u00a0que es el necesario para poder construir nuestra tabla que insertamos en la pesta\u00f1a Consultas de nuestra aplicaci\u00f3n. Quedar\u00eda de la siguiente manera:<\/p>\n<pre class=\"lang:java decode:true \">public DefaultTableModel consultas(String telefono){\n\t\t\/**\n\t\t * creamos un Object que sera el encargado\n\t\t * de almacenar los valores de cada \n\t\t * contacto y estos se insertaran dentro\n\t\t * de la tabla..\n\t\t *\/\n\t\tObject[] filas=new Object[7];\n\t\t\/\/creamos el objeto que devolveremos..\n\t\tDefaultTableModel modeloTabla=new DefaultTableModel();\n\t\t\/\/asignamos los encabezados de cada columna de la tabla..\n\t\tmodeloTabla.addColumn(\"Nombre:\");\n\t\tmodeloTabla.addColumn(\"Apellido:\");\n\t\tmodeloTabla.addColumn(\"Telefono:\");\n\t\tmodeloTabla.addColumn(\"Correo:\");\n\t\tmodeloTabla.addColumn(\"Facebook:\");\n\t\tmodeloTabla.addColumn(\"Twitter:\");\n\t\tmodeloTabla.addColumn(\"Instagram\");\n\t\t\/\/realizamos la consulta de todos los contactos..\n\t\tfor(int x=0;x&lt;contactosLista.size();x++){\n\t\t\t\/\/creamos el objeto para acceder a los\n\t\t\t\/\/datos del contacto\n\t\t\tContactos contact=contactosLista.get(x);\n\t\t\t\/**\n\t\t\t * el metodo indexOf nos permite compara toda\n\t\t\t * la cadena del telefono con el o los carac\n\t\t\t * caracteres que recibimos..\n\t\t\t * esto nos permitira buscar las coincidencias\n\t\t\t * y poner todos los que coincidan\n\t\t\t *\/\n\t\t\tint res=contact.getTelefono().indexOf(telefono);\n\t\t\tif(res!=-1){\n\t\t\t\tfilas[0]=contact.getNombre();\n\t\t\t\tfilas[1]=contact.getApellido();\n\t\t\t\tfilas[2]=contact.getTelefono();\n\t\t\t\tfilas[3]=contact.getCorreo();\n\t\t\t\tfilas[4]=contact.getFacebook();\n\t\t\t\tfilas[5]=contact.getTwitter();\n\t\t\t\tfilas[6]=contact.getInstagram();\n\t\t\t\tmodeloTabla.addRow(filas);\n\t\t\t}\n\t\t}\n\t\treturn modeloTabla;\n\t}\n<\/pre>\n<p>Nota: como habr\u00e1s notado he puesto comentarios dentro del c\u00f3digo, que en lo particular es m\u00e1s c\u00f3modo para que comprendas el c\u00f3digo..<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Paso 21:<\/strong> \u00a0ahora crearemos un m\u00e9todo llamado <strong>buscarFoto(), <\/strong>\u00a0que nos permitir\u00e1 buscar la fotograf\u00eda del contacto que le daremos Doble\u00a0 clic dentro de la tabla de b\u00fasqueda ya que la imagen no la podemos insertar dentro de esta tabla.. Quedar\u00eda la siguiente manera:<\/p>\n<pre class=\"lang:java decode:true\">public boolean buscarFoto(String telefono){\n\t\tboolean respuesta=false;\n\t\tfor(int x=0;x&lt;contactosLista.size();x++){\n\t\t\tContactos contact=contactosLista.get(x);\n\t\t\tif(contact.getTelefono().equals(telefono)){\n\t\t\t\tfoto=contact.getFoto();\n\t\t\t\trespuesta=true;\n\t\t\t}\n\t\t}\n\t\treturn respuesta;\n\t}\n<\/pre>\n<p><strong>Paso 22:<\/strong> bueno hasta ahorita todo se enfoc\u00f3 en trabajar con los contactos, ya que es lo principal del programa, por lo consiguiente crearemos dos m\u00e9todos para usuarios uno ser\u00e1 el de agregar un nuevo usuario y el otro para eliminarlo, quedando los m\u00e9todos: <strong>nuevoUsuario()<\/strong> y <strong>eliminarUsuarios()<\/strong><\/p>\n<pre class=\"lang:java decode:true\">public void nuevoUsuario(String usuario,\n\t\t\t\t\t\tString pass, String tipo){\n\tusuariosLista.add(new Usuarios(usuario,pass,tipo));\n\tactualizarUsuarios();\t\n\t}\n\t\npublic void eliminarUsuario(String user){\n\t\tfor(int x=0;x&lt;usuariosLista.size();x++){\n\t\t\tUsuarios usuario=usuariosLista.get(x);\n\t\t\tif(usuario.getUsuario().equals(user)){\n\t\t\t\tusuariosLista.remove(x);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tactualizarUsuarios();\n\t}\n<\/pre>\n<p><strong>Bueno con esto hemos terminado la clase modelo, ahora procederemos a crear una clase que nos ayudara con la correcci\u00f3n\u00a0de la ruta o nombre del archivo que utilizaremos como imagenes<\/strong><\/p>\n<p>Paso 23: Creamos la Clase CorregirRuta dentro del mismo paquete <strong>modelo<\/strong>:<\/p>\n<pre class=\"lang:java decode:true \">public class CorregirRuta {\n\t String ruta, separador, nuevoSeparador; \n\t \n\t    public CorregirRuta(String laruta, String sep, String nuevoSep)\n\t    {\n\t        ruta=laruta;\n\t        separador=sep;\n\t        nuevoSeparador=nuevoSep;\n\t    }\n\t \n\t    public String obtenerRutaCorregidaWindows()\n\t    {\n\t         StringTokenizer tokens=new StringTokenizer(ruta, separador);\n\t         \/\/Para guardar la ruta corregida\n\t         String rutaCorregida = new String();\n\t         \/\/Contar los tokens (en este caso las carpetas, contado tambien\n\t         \/\/ el nombre del archivo seleccionado).\n\t         int noTokens = tokens.countTokens();\n\t         int i = 1;\n\t         do\n\t         {      \/\/Agregar el nuevo separador\n\t            rutaCorregida += tokens.nextToken()+nuevoSeparador;\n\t            i++;\n\t         }while(i&lt;noTokens);\n\t         \/\/Agregar a la ruta corregida el ultimo token, (nombre del archivo)\n\t         rutaCorregida += tokens.nextToken();       \n\t         \/\/Mostrar la ruta corregida en la consola\n\t        \/\/ System.out.println(rutaCorregida+\"\\n\"+noTokens+ \" tokens\");\n\t         return rutaCorregida;\n\t    }\n}<\/pre>\n<p><strong>Ahora Procederemos a crear la Clase Controlador dentro del paquete del mismo nombre:<\/strong><\/p>\n<p><strong>Paso 24: <\/strong>Creamos la Clase Controlador y creamos los objetos y variables que utilizaremos<\/p>\n<pre class=\"lang:java decode:true\">public class Controlador{\n        VentanaPrincipal ventana = new VentanaPrincipal();\n\tModelo modelo = new Modelo();\n\tString url = null;\n\tString foto;\n\tString usuarioActivo=null;\n        String telModificar;\n\n}<\/pre>\n<p><strong>Paso 25:\u00a0<\/strong> empezamos a asignarle acciones a cada uno de los botones de la interfaz gr\u00e1fica iniciamos creando el metodo accionesBotones() y con los botones\u00a0 del Panel Login.<\/p>\n<pre class=\"lang:java decode:true\">public void accionesBotones(){\nventana.panelLogin.btnLogin.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tString usuario = ventana.panelLogin.txtUsuario.getText();\n\t\t\t\tString password = ventana.panelLogin.txtPass.getText();\n\t\t\t\tif (modelo.login(usuario, password)) {\n\t\t\t\t\tif (modelo.tipoUsuario.equals(\"0\")) {\n\t\t\t\t\t\tventana.cartas.show(ventana.panelCarta, \"todo\");\n\t\t\t\t\t\tventana.barraMenu.setVisible(true);\n\t\t\t\t\t\tventana.mnAgenda.setEnabled(true);\n\t\t\t\t\t\tventana.mnUsuarios.setEnabled(true);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(0,true);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(1,true);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(2,true);\n\t\t\t\t\t\tusuarioActivo=usuario;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tventana.barraMenu.setVisible(true);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(0,false);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(1,false);\n\t\t\t\t\t\tventana.pestanas.setEnabledAt(2,false);\t\t\t\t\t\t\n\t\t\t\t\t\tventana.pestanas.setSelectedIndex(3);\n\t\t\t\t\t\tventana.cartas.show(ventana.panelCarta, \"todo\");\n\t\t\t\t\t\tusuarioActivo=usuario;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tJOptionPane.showMessageDialog(null, \"Acceso Denegado\",\n\t\t\t\t\t\t\tnull, JOptionPane.ERROR_MESSAGE);\n\t\t\t\t\tventana.panelLogin.txtUsuario.setText(\"\");\n\t\t\t\t\tventana.panelLogin.txtPass.setText(\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 26:\u00a0<\/strong>ahora asignamos acciones a los botones de Cancelar, Grabar y a la Etiqueta Foto de <strong>Altas<\/strong><\/p>\n<pre class=\"lang:java decode:true \">ventana.panelAltas.btnCancelar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tventana.panelAltas.txtNombre.setText(\"\");\n\t\t\t\tventana.panelAltas.txtApellido.setText(\"\");\n\t\t\t\tventana.panelAltas.txtTelefono.setText(\"\");\n\t\t\t\tventana.panelAltas.txtCorreo.setText(\"\");\n\t\t\t\tventana.panelAltas.txtFacebook.setText(\"\");\n\t\t\t\tventana.panelAltas.txtTwitter.setText(\"\");\n\t\t\t\tventana.panelAltas.txtInstagram.setText(\"\");\n\t\t\t\tventana.panelAltas.lblFoto.setIcon(null);\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelAltas.lblFoto.addMouseListener(new MouseListener() {\n\n\t\t\t@Override\n\t\t\tpublic void mouseReleased(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mousePressed(MouseEvent arg0) {\n\t\t\t\tJFileChooser eleccion = new JFileChooser();\n\n\t\t\t\tint opc;\n\t\t\t\topc = eleccion.showOpenDialog(null);\n\t\t\t\tif (opc == eleccion.APPROVE_OPTION) {\n\t\t\t\t\turl = eleccion.getSelectedFile().toString();\n\n\t\t\t\t\tventana.panelAltas.foto = new ImageIcon(url);\n\t\t\t\t\tventana.panelAltas.lblFoto.setText(\"\");\n\t\t\t\t\tventana.panelAltas.lblFoto.setIcon(ventana.panelAltas.foto);\n\t\t\t\t}\n\t\t\t\tCorregirRuta ruta1 = new CorregirRuta(url, \"\\\\\", \"\\\\\\\\\");\n\t\t\t\tfoto = ruta1.obtenerRutaCorregidaWindows();\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseExited(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseEntered(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseClicked(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelAltas.btnGrabar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tString nombre = ventana.panelAltas.txtNombre.getText();\n\t\t\t\tString apellido = ventana.panelAltas.txtApellido.getText();\n\t\t\t\tString telefono = ventana.panelAltas.txtTelefono.getText();\n\t\t\t\tString correo = ventana.panelAltas.txtCorreo.getText();\n\t\t\t\tString facebook = ventana.panelAltas.txtFacebook.getText();\n\t\t\t\tString twitter = ventana.panelAltas.txtTwitter.getText();\n\t\t\t\tString instagram = ventana.panelAltas.txtInstagram.getText();\n\t\t\t\tmodelo.altas(nombre, apellido, telefono, correo, facebook,\n\t\t\t\t\t\ttwitter, instagram, url);\n\t\t\t\tventana.panelAltas.txtNombre.setText(\"\");\n\t\t\t\tventana.panelAltas.txtApellido.setText(\"\");\n\t\t\t\tventana.panelAltas.txtTelefono.setText(\"\");\n\t\t\t\tventana.panelAltas.txtCorreo.setText(\"\");\n\t\t\t\tventana.panelAltas.txtFacebook.setText(\"\");\n\t\t\t\tventana.panelAltas.txtTwitter.setText(\"\");\n\t\t\t\tventana.panelAltas.txtInstagram.setText(\"\");\n\t\t\t\tventana.panelAltas.lblFoto.setIcon(null);\n\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 27: \u00a0<\/strong>Ahora le damos las acciones a los botones de BAJAS que serian los de Cancelar, Buscar, Grabar o Eliminar.<\/p>\n<pre class=\"lang:java decode:true \">ventana.panelBajas.btnBuscar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tString telefono = ventana.panelBajas.txtTelefono.getText();\n\t\t\t\tif (modelo.buscar(telefono)) {\n\t\t\t\t\tventana.panelBajas.txtNombre.setText(modelo.nombre);\n\t\t\t\t\tventana.panelBajas.txtApellido.setText(modelo.apellido);\n\t\t\t\t\tventana.panelBajas.txtCorreo.setText(modelo.correo);\n\t\t\t\t\tventana.panelBajas.txtFacebook.setText(modelo.facebook);\n\t\t\t\t\tventana.panelBajas.txtTwitter.setText(modelo.twitter);\n\t\t\t\t\tventana.panelBajas.txtInstagram.setText(modelo.instagram);\n\t\t\t\t\tfoto = modelo.foto;\n\t\t\t\t\tventana.panelBajas.foto = new ImageIcon(foto);\n\t\t\t\t\tventana.panelBajas.lblFoto.setIcon(ventana.panelBajas.foto);\n\t\t\t\t\tventana.panelBajas.btnGrabar.setEnabled(true);\n\t\t\t\t} else {\n\t\t\t\t\tJOptionPane.showMessageDialog(null,\n\t\t\t\t\t\t\t\"Telefono no Localizado\");\n\t\t\t\t\tventana.panelBajas.txtTelefono.setText(\"\");\n\n\t\t\t\t}\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelBajas.btnCancelar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tventana.panelBajas.txtNombre.setText(\"\");\n\t\t\t\tventana.panelBajas.txtApellido.setText(\"\");\n\t\t\t\tventana.panelBajas.txtCorreo.setText(\"\");\n\t\t\t\tventana.panelBajas.txtFacebook.setText(\"\");\n\t\t\t\tventana.panelBajas.txtTwitter.setText(\"\");\n\t\t\t\tventana.panelBajas.txtInstagram.setText(\"\");\n\t\t\t\tventana.panelBajas.lblFoto.setIcon(null);\n\t\t\t\tventana.panelBajas.txtTelefono.setText(\"\");\n\t\t\t\tventana.panelBajas.btnGrabar.setEnabled(false);\n\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelBajas.btnGrabar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tString telefono = ventana.panelBajas.txtTelefono.getText();\n\t\t\t\tmodelo.bajas(telefono);\n\t\t\t\tventana.panelBajas.txtNombre.setText(\"\");\n\t\t\t\tventana.panelBajas.txtApellido.setText(\"\");\n\t\t\t\tventana.panelBajas.txtCorreo.setText(\"\");\n\t\t\t\tventana.panelBajas.txtFacebook.setText(\"\");\n\t\t\t\tventana.panelBajas.txtTwitter.setText(\"\");\n\t\t\t\tventana.panelBajas.txtInstagram.setText(\"\");\n\t\t\t\tventana.panelBajas.lblFoto.setIcon(null);\n\t\t\t\tventana.panelBajas.txtTelefono.setText(\"\");\n\t\t\t\tventana.panelBajas.btnGrabar.setEnabled(false);\n\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 28:\u00a0<\/strong>De igual manera hacemos con Cambios los Botones de Buscar, Cancelar, Grabar y la etiqueta de Foto.<\/p>\n<pre class=\"lang:java decode:true\">ventana.panelCambios.btnBuscar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tString telefono = ventana.panelCambios.txtTelefono.getText();\n\t\t\t\tif (modelo.buscar(telefono)) {\n                                        telcambios=telefono;\n\t\t\t\t\tventana.panelCambios.txtNombre.setText(modelo.nombre);\n\t\t\t\t\tventana.panelCambios.txtApellido.setText(modelo.apellido);\n\t\t\t\t\tventana.panelCambios.txtCorreo.setText(modelo.correo);\n\t\t\t\t\tventana.panelCambios.txtFacebook.setText(modelo.facebook);\n\t\t\t\t\tventana.panelCambios.txtTwitter.setText(modelo.twitter);\n\t\t\t\t\tventana.panelCambios.txtInstagram.setText(modelo.instagram);\n\t\t\t\t\tfoto = modelo.foto;\n\t\t\t\t\tventana.panelCambios.foto = new ImageIcon(foto);\n\t\t\t\t\tventana.panelCambios.lblFoto\n\t\t\t\t\t\t\t.setIcon(ventana.panelCambios.foto);\n\t\t\t\t\tventana.panelCambios.btnGrabar.setEnabled(true);\n\t\t\t\t\tventana.panelCambios.txtTelefono.setEditable(false);\n\t\t\t\t} else {\n\t\t\t\t\tJOptionPane.showMessageDialog(null,\n\t\t\t\t\t\t\t\"Telefono no Localizado\");\n\t\t\t\t\tventana.panelCambios.txtTelefono.setText(\"\");\n\n\t\t\t\t}\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelCambios.btnCancelar\n\t\t\t\t.addActionListener(new ActionListener() {\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\t\tventana.panelCambios.txtNombre.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.txtApellido.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.txtCorreo.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.txtFacebook.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.txtTwitter.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.txtInstagram.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.lblFoto.setIcon(null);\n\t\t\t\t\t\tventana.panelCambios.txtTelefono.setText(\"\");\n\t\t\t\t\t\tventana.panelCambios.btnGrabar.setEnabled(false);\n\t\t\t\t\t\tventana.panelCambios.txtTelefono.setEditable(true);\n\n\t\t\t\t\t}\n\t\t\t\t});<\/pre>\n<pre class=\"lang:java decode:true\">ventana.panelCambios.btnGrabar.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tString telefono = ventana.panelCambios.txtTelefono.getText();\n\t\t\t\tString nombre = ventana.panelCambios.txtNombre.getText();\n\t\t\t\tString apellido = ventana.panelCambios.txtApellido.getText();\n\t\t\t\tString correo = ventana.panelCambios.txtCorreo.getText();\n\t\t\t\tString facebook = ventana.panelCambios.txtFacebook.getText();\n\t\t\t\tString twitter = ventana.panelCambios.txtTwitter.getText();\n\t\t\t\tString instagram = ventana.panelCambios.txtInstagram.getText();\n\n\t\t\t\tmodelo.cambios(nombre, apellido, correo, telefono, facebook,\n\t\t\t\t\t\ttwitter, instagram, foto, telcambios);\n\n\t\t\t\tventana.panelCambios.txtNombre.setText(\"\");\n\t\t\t\tventana.panelCambios.txtApellido.setText(\"\");\n\t\t\t\tventana.panelCambios.txtCorreo.setText(\"\");\n\t\t\t\tventana.panelCambios.txtFacebook.setText(\"\");\n\t\t\t\tventana.panelCambios.txtTwitter.setText(\"\");\n\t\t\t\tventana.panelCambios.txtInstagram.setText(\"\");\n\t\t\t\tventana.panelCambios.lblFoto.setIcon(null);\n\t\t\t\tventana.panelCambios.txtTelefono.setText(\"\");\n\t\t\t\tventana.panelCambios.btnGrabar.setEnabled(false);\n\t\t\t\tventana.panelCambios.txtTelefono.setEditable(true);\n\t\t\t\tventana.panelCambios.lblFoto.setIcon(null);\n\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true\">ventana.panelCambios.lblFoto.addMouseListener(new MouseListener() {\n\n\t\t\t@Override\n\t\t\tpublic void mouseReleased(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mousePressed(MouseEvent arg0) {\n\t\t\t\tJFileChooser eleccion = new JFileChooser();\n\n\t\t\t\tint opc;\n\t\t\t\topc = eleccion.showOpenDialog(null);\n\t\t\t\tif (opc == eleccion.APPROVE_OPTION) {\n\t\t\t\t\turl = eleccion.getSelectedFile().toString();\n\n\t\t\t\t\tventana.panelCambios.foto = new ImageIcon(url);\n\t\t\t\t\tventana.panelCambios.lblFoto.setText(\"\");\n\t\t\t\t\tventana.panelCambios.lblFoto\n\t\t\t\t\t\t\t.setIcon(ventana.panelCambios.foto);\n\t\t\t\t}\n\t\t\t\tCorregirRuta ruta1 = new CorregirRuta(url, \"\\\\\", \"\\\\\\\\\");\n\t\t\t\tfoto = ruta1.obtenerRutaCorregidaWindows();\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseExited(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseEntered(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseClicked(MouseEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 29: <\/strong>ahora hacemos lo mismo con los componentes de Consultas, la diferencia es que ahora no tenemos botones, si no que tenemos un JTextField y un JTable a los que les daremos acciones.<\/p>\n<pre class=\"lang:java decode:true \">ventana.panelConsultas.txtTelefono.addKeyListener(new KeyListener() {\n\n\t\t\t@Override\n\t\t\tpublic void keyTyped(KeyEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void keyReleased(KeyEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tString telefono = ventana.panelConsultas.txtTelefono.getText();\n\n\t\t\t\tventana.panelConsultas.tabla.setModel(modelo\n\t\t\t\t\t\t.consultas(telefono));\n\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void keyPressed(KeyEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.panelConsultas.tabla.addMouseListener(new MouseAdapter() {\n\n\t\t\tpublic void mousePressed(MouseEvent Mouse_evt) {\n\t\t\t\tJTable table = (JTable) Mouse_evt.getSource();\n\t\t\t\tPoint point = Mouse_evt.getPoint();\n\t\t\t\tint row = table.rowAtPoint(point);\n\t\t\t\tif (Mouse_evt.getClickCount() == 2) {\n\t\t\t\t\tString telefono = ventana.panelConsultas.tabla.getValueAt(\n\t\t\t\t\t\t\tventana.panelConsultas.tabla.getSelectedRow(), 2)\n\t\t\t\t\t\t\t.toString();\n\n\t\t\t\t\tif (modelo.buscarFoto(telefono)) {\n\t\t\t\t\t\tfoto = modelo.foto;\n\t\t\t\t\t\tImageIcon imgfoto = new ImageIcon(foto);\n\t\t\t\t\t\tnew VentanaFoto(imgfoto);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 30:<\/strong> Ahora le damos las acciones a cada uno de los botones Menu del programa..<\/p>\n<pre class=\"lang:java decode:true \">ventana.mnNuevoUser.addActionListener(new ActionListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tnew VentanaNuevoUsuario();\n\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnEliminarUser.addActionListener(new ActionListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tString usuario=JOptionPane.showInputDialog(\"Ingresa el Usuario a Eliminar\");\n\t\t\t\tif(usuario.equals(usuarioActivo)){\n\t\t\t\t\tJOptionPane.showMessageDialog(null, \"Este usuario no se Puede Eliminar \\npor que esta Activo\");\n\t\t\t\t}else{\t\t\t\t\t\n\t\t\t\t\tint opcion=JOptionPane.showConfirmDialog(null, \"Deseas Eliminar a este Usuario?\");\n\t\t\t\t\tif(opcion==0){\n\t\t\t\t\t\tmodelo.eliminarUsuario(usuario);\n\t\t\t\t\t\tusuarioActivo=\"\";\n\t\t\t\t\t\tJOptionPane.showMessageDialog(null, \"!!Usuario Eliminado!!\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnCerrarSesion.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\tventana.cartas.show(ventana.panelCarta, \"login\");\n\t\t\t\tventana.barraMenu.setVisible(false);\n\t\t\t\tventana.mnAgenda.setEnabled(false);\n\t\t\t\tventana.mnUsuarios.setEnabled(false);\n\t\t\t\tventana.panelLogin.txtUsuario.setText(\"\");\n\t\t\t\tventana.panelLogin.txtPass.setText(\"\");\n\t\t\t\tusuarioActivo=\"\";\n\t\t\t\tmodelo.cargar();\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnAltas.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tventana.pestanas.setSelectedIndex(0);\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnBajas.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tventana.pestanas.setSelectedIndex(1);\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnCambios.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tventana.pestanas.setSelectedIndex(2);\n\t\t\t}\n\t\t});<\/pre>\n<pre class=\"lang:java decode:true \">ventana.mnConsultas.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tventana.pestanas.setSelectedIndex(3);\n\t\t\t}\n\t\t});<\/pre>\n<p><strong>Paso 31:\u00a0<\/strong>Ahora Crearemos la siguiente Ventana:<\/p>\n<p><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-128 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/agenda6-300x224.png\" alt=\"agenda6\" width=\"300\" height=\"224\" \/><\/a><\/p>\n<p>Que sera la que nos permita crear un nuevo usuario..<\/p>\n<pre class=\"lang:java decode:true\">package vista;\n\npublic class VentanaNuevoUsuario extends JFrame {\n\tModelo modelo = new Modelo();\n\tpublic JLabel lblTitulo = new JLabel(\"Nuevo Usuario\");\n\tpublic JLabel lblUsuario = new JLabel(\"Usuario:\");\n\tpublic JLabel lblPassword = new JLabel(\"Password:\");\n\tpublic JLabel lblConfPassword = new JLabel(\"Confirmar Password:\");\n\tpublic JLabel lblTipo=new JLabel(\"Tipo de usuario\");\n\n\tpublic JTextField txtUsuario = new JTextField();\n\tpublic JPasswordField txtPass = new JPasswordField();\n\tpublic JPasswordField txtConfPass = new JPasswordField();\n\t\n\tpublic JComboBox cmbtipo=new JComboBox();\n\tpublic JButton btnCancelar = new JButton(\"Cancelar\");\n\tpublic JButton btnGrabar = new JButton(\"Grabar\");\n\n\tpublic VentanaNuevoUsuario() {\n\t\tsetTitle(\"Nuevo Usuario\");\n\t\tsetLayout(null);\n\t\tlblTitulo.setBounds(10, 20, 400, 50);\n\t\tlblTitulo.setFont(new Font(\"Arial\", 1, 20));\n\t\tlblTitulo.setHorizontalAlignment(JLabel.CENTER);\n\t\t\n\t\tlblUsuario.setBounds(0,80,125,30);\n\t\tlblUsuario.setHorizontalAlignment(JLabel.RIGHT);\n\t\tlblPassword.setBounds(0,120,125,30);\n\t\tlblPassword.setHorizontalAlignment(JLabel.RIGHT);\n\t\tlblConfPassword.setBounds(0,160,125,30);\n\t\tlblConfPassword.setHorizontalAlignment(JLabel.RIGHT);\n\t\t\n\t\ttxtUsuario.setBounds(130,80,100,30);\n\t\ttxtPass.setBounds(130,120,100,30);\n\t\ttxtConfPass.setBounds(130,160,100,30);\n\t\t\n\t\tbtnCancelar.setBounds(250,80,100,30);\n\t\tbtnGrabar.setBounds(250,120,100,30);\n\t\t\n\t\tlblTipo.setBounds(0,200,125,30);\n\t\tlblTipo.setHorizontalAlignment(JLabel.RIGHT);\n\t\tcmbtipo.addItem(\"Administrador\");\n\t\tcmbtipo.addItem(\"Limitado\");\n\t\tcmbtipo.setBounds(130,200,120,30);\n\t\t\n\t\tadd(lblTitulo);\n\t\tadd(lblUsuario);\n\t\tadd(lblPassword);\n\t\tadd(lblConfPassword);\n\t\tadd(txtUsuario);\n\t\tadd(txtPass);\n\t\tadd(txtConfPass);\n\t\tadd(btnCancelar);\n\t\tadd(btnGrabar);\n\t\tadd(cmbtipo);\n\t\tadd(lblTipo);\n\t\tsetSize(400,300);\n\t\tsetVisible(true);\n\t\t\n\t\tacciones();\n\t}\n\tpublic void acciones(){\n\t\tbtnCancelar.addActionListener(new ActionListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\ttxtUsuario.setText(\"\");\n\t\t\t\ttxtPass.setText(\"\");\n\t\t\t\ttxtConfPass.setText(\"\");\n\t\t\t}\n\t\t});\n\t\tbtnGrabar.addActionListener(new ActionListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent arg0) {\n\t\t\t\t\/\/ TODO Auto-generated method stub\n\t\t\t\tString usuario=txtUsuario.getText();\n\t\t\t\tString pass=txtPass.getText();\n\t\t\t\tString confir=txtConfPass.getText();\n\t\t\t\tString tipo=String.valueOf(cmbtipo.getSelectedIndex());\n\t\t\t\tif(usuario.equals(\"\")||pass.equals(\"\")||confir.equals(\"\")){\n\t\t\t\t\tJOptionPane.showMessageDialog(null, \"Favor de llenar todos los campos\");\n\t\t\t\t}else{\n\t\t\t\t\tif(pass.equals(confir)){\n\t\t\t\t\t\tmodelo.nuevoUsuario(usuario,pass,tipo);\n\t\t\t\t\t\tsetVisible(false);\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}else{\n\t\t\t\t\t\tJOptionPane.showMessageDialog(null, \"Las contrase\u00f1as no Coinciden\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n}<\/pre>\n<p style=\"text-align: left;\"><strong>Paso 32:<\/strong> crearemos las siguiente clase VentanaFoto, que nos servir\u00e1 para ver la fotograf\u00eda del contacto cuando le demos doble clic en la tabla de consultas:<\/p>\n<pre class=\"lang:java decode:true \">public class VentanaFoto extends JFrame{\n\tpublic JLabel lblFoto=new JLabel(\"Foto Aqui\");\n\tBorder marco = BorderFactory.createLineBorder(Color.BLUE, 5);\n\tpublic ImageIcon foto;\n\tModelo modelo=new Modelo();\n\t\n\tpublic VentanaFoto(ImageIcon foto){\n\t\tsetLayout(new BorderLayout() );\n\t\tlblFoto.setBorder(marco);\n\t\tadd(lblFoto,BorderLayout.CENTER);\n\t\tlblFoto.setIcon(foto);\n\t\tsetSize(350,350);\n\t\tsetVisible(true);\n\t}\n\n}<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: left;\"><strong>Nota:<\/strong> la clase anterior la crearemos en el paquete vista<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000080;\">Muy Bien!!! hasta aqui hemos terminado solo falta crear nuestra clase Auxiliar dentro de controlador para que podamos iniciar nuestro programa&#8230;<\/span><\/p>\n<pre class=\"lang:default decode:true\">public class Auxiliar{\npublic static void main(String[] args) {\n\tControlador objeto= new Controlador();\n        objeto.accionesBotones(); \n\t}\n\n}<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000080;\">\u00a0<strong><span style=\"color: #0000ff;\">NOTA: Para que se pueda ver la Imagen deber\u00e1s\u00a0crear la carpeta Im\u00e1genes\u00a0dentro del proyecto, en la mismo ubicaci\u00f3n\u00a0de las carpetas:<\/span><\/strong><\/span><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/carpeta-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-182 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2016\/11\/carpeta-2.png\" alt=\"carpeta\" width=\"204\" height=\"180\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #3366ff;\"><strong><span style=\"color: #3366ff;\">El Archivo <span style=\"color: #ff0000;\">usuarios.csv<\/span> tendr\u00e1s\u00a0que agregarle tres valores para poder ingresar a la agenda: quedar\u00eda.<\/span><\/strong><\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #3366ff;\">(usuario,password,tipoUsuario)<\/span><\/p>\n<h4 style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong>Ejemplo:\u00a0 \u00a0 luis,123,0<\/strong><\/span><\/h4>\n<p style=\"text-align: center;\">@Autor: Prof. Luis Mitre<\/p>\n<p><center><a title=\"contador de visitas\" href=\"http:\/\/www.cerotec.net\/estadisticas-87011\/ profeluismitre.com.mx\"><img decoding=\"async\" src=\"http:\/\/www.cerotec.net\/contador.php?t=1&amp;s=3&amp;i=87011\" alt=\"Contador de visitas y estad\u00edsticas\" \/><\/a><br \/>\n<a style=\"font-size: 12px;\" href=\"http:\/\/www.cerotec.net\">Dise\u00f1o<\/a><\/center>;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>@Autor: Prof. Luis Mitre Esta Practica es una Agenda Telef\u00f3nica que almacena la informaci\u00f3n en\u00a0un archivo CSV Paso 1.\u00a0Creamos un nuevo Proyecto java dando Click en File-New-Java Proyect en Eclipse. Paso 2.\u00a0Creamos los Paquetes Modelo, Vista y Controlador en el Proyecto creado. Iniciaremos creando la parte visual de nuestro Proyecto. Paso 3.\u00a0Creamos la Clase PanelLogin\u00a0\u00a0en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-120","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=120"}],"version-history":[{"count":24,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/120\/revisions"}],"predecessor-version":[{"id":457,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/120\/revisions\/457"}],"wp:attachment":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}