Agenda Telefonica con Base de Datos

@Autor: Prof. Luis Mitre

Esta Practica es una Agenda Telefónica que almacena la información en una base de datos Local en Mysql.

Paso 1. Creamos un nuevo Proyecto java dando Click en File-New-Java Proyect en Eclipse.

Paso 2. Creamos los Paquetes Modelo, Vista y Controlador en el Proyecto creado.

Iniciaremos creando la parte visual de nuestro Proyecto.

Paso 3. Creamos la Clase PanelLogin  dentro de paquete vista en la cual Extenderemos (Heradaremos) dela Clase JPanel para que la clase se comporte como un contenedor quedando:

import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class PanelLogin extends JPanel{

Paso 4: ahora creamos los componentes que necesitaremos en esta ventana, considerando que en esta ventana incluiremos un nuevo componente para el uso de las contraseñas..

        JLabel lblUsuario=new JLabel("Usuario:");
	JLabel lblPass=new JLabel("Constraseña");
	public JTextField txtUsuario=new JTextField();
	public JPasswordField txtPass=new JPasswordField();
	public JButton btnLogin=new JButton("LOGIN");

Paso 5: Creamos el Constructor de la clase para empezar a armar nuestra ventana asignando el sistema de ordenamiento a travez de setLayout(null), que indica que usaremos coordenadas:

public PanelLogin(){
		setLayout(null);
		lblUsuario.setBounds(150,200,100,30);
		lblUsuario.setForeground(new Color(255,0,0));
		lblUsuario.setFont(new Font("Arial", 1,20));
		lblPass.setBounds(120,240,140,30);
		lblPass.setForeground(new Color(255,0,0));
		lblPass.setFont(new Font("Arial", 1,20));
		txtUsuario.setBounds(250,200,100,30);
		txtPass.setBounds(250,240,100,30);
		btnLogin.setBounds(200,290,100,30);
		add(lblUsuario);
		add(lblPass);
		add(txtUsuario);
		add(txtPass);
		add(btnLogin);
	}
}

La ventana se vera Asi, una vez ya corriendo el programa:

agenda1

Paso 6:  Ahora creamos la clase PanelAltas, usando el mismo procedimiento:

  1. Creamos los objetos necesarios
  2. Creamos el constructor y agregamos coordenadas
  3. agregamos los componentes al contenedor.
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class PanelAltas extends JPanel{
	public JLabel lblTitulo=new JLabel("ALTAS");
	public JLabel lblNombre=new JLabel("Nombre");
	public JLabel lblApellido=new JLabel("Apellido");
	public JLabel lblTelefono=new JLabel("Telefono");
	public JLabel lblCorreo=new JLabel("Correo");
	public JLabel lblFace=new JLabel("Facebook");
	public JLabel lblTwitter=new JLabel("Twitter");
	public JLabel lblInstagram=new JLabel("Instagram");
	public JTextField txtNombre=new JTextField();
	public JTextField txtApellido=new JTextField();
	public JTextField txtTelefono=new JTextField();
	public JTextField txtCorreo=new JTextField();
	public JTextField txtFacebook=new JTextField();
	public JTextField txtTwitter=new JTextField();
	public JTextField txtInstagram=new JTextField();
	public JButton btnCancelar=new JButton("Cancelar");
	public JButton btnGrabar=new JButton("Grabar");
	public JLabel lblFoto=new JLabel("Foto Aqui");
	Border marco = BorderFactory.createLineBorder(Color.BLUE, 5);
	public ImageIcon foto;
	
	public PanelAltas(){
		setLayout(null);
		lblTitulo.setBounds(200,20,100,50);
		lblTitulo.setFont(new Font("Arial", 1, 25));
		lblFoto.setBorder(marco);
		lblFoto.setHorizontalAlignment(JLabel.CENTER);
		lblFoto.setBounds(230,80,200,200);
		
		lblNombre.setBounds(30,80,80,30);
		lblApellido.setBounds(30,120,80,30);
		lblTelefono.setBounds(30,160,80,30);
		lblCorreo.setBounds(30,200,80,30);
		lblFace.setBounds(30,240,80,30);
		lblTwitter.setBounds(30,280,80,30);
		lblInstagram.setBounds(30,320,80,30);
		txtNombre.setBounds(110,80,100,30);
		txtApellido.setBounds(110,120,100,30);
		txtTelefono.setBounds(110,160,100,30);
		txtCorreo.setBounds(110,200,100,30);
		txtFacebook.setBounds(110,240,100,30);
		txtTwitter.setBounds(110,280,100,30);
		txtInstagram.setBounds(110,320,100,30);
		btnCancelar.setBounds(75,370,100,50);
		btnGrabar.setBounds(225,370,100,50);
		add(lblTitulo);
		add(lblNombre);
		add(lblApellido);
		add(lblTelefono);
		add(lblCorreo);
		add(lblFace);
		add(lblTwitter);
		add(lblInstagram);
		add(txtNombre);
		add(txtApellido);
		add(txtTelefono);
		add(txtFacebook);
		add(txtCorreo);
		add(txtTwitter);
		add(txtInstagram);
		add(btnCancelar);
		add(btnGrabar);
		add(lblFoto);
		
	}
}

La ventana se vera de la siguiente manera:

agenda2

Paso 7: Ahora creamos la Clase PanelBajas que al igual que la clase altas realizamos el mismo procedimiento.

nota: En esta clase agregamos un nuevo elemento que es el botón para buscar..

import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class PanelBajas extends JPanel {
	public JLabel lblTitulo=new JLabel("BAJAS");
	public JLabel lblNombre=new JLabel("Nombre");
	public JLabel lblApellido=new JLabel("Apellido");
	public JLabel lblTelefono=new JLabel("Telefono");
	public JLabel lblCorreo=new JLabel("Correo");
	public JLabel lblFace=new JLabel("Facebook");
	public JLabel lblTwitter=new JLabel("Twitter");
	public JLabel lblInstagram=new JLabel("Instagram");
	public JTextField txtNombre=new JTextField();
	public JTextField txtApellido=new JTextField();
	public JTextField txtTelefono=new JTextField();
	public JTextField txtCorreo=new JTextField();
	public JTextField txtFacebook=new JTextField();
	public JTextField txtTwitter=new JTextField();
	public JTextField txtInstagram=new JTextField();
	public JButton btnCancelar=new JButton("Cancelar");
	public JButton btnGrabar=new JButton("Eliminar");
	public JButton btnBuscar=new JButton("Buscar");
	public JLabel lblFoto=new JLabel("Foto Aqui");
	Border marco = BorderFactory.createLineBorder(Color.BLUE, 5);
	public ImageIcon foto;
	
	public PanelBajas(){
		btnGrabar.setEnabled(false);
		setLayout(null);
		lblTitulo.setBounds(200,20,100,50);
		lblTitulo.setFont(new Font("Arial", 1, 25));
		lblFoto.setBorder(marco);
		lblFoto.setHorizontalAlignment(JLabel.CENTER);
		lblFoto.setBounds(230,130,200,200);
		
		lblTelefono.setBounds(30,80,80,30);
		txtTelefono.setBounds(110,80,100,30);
		btnBuscar.setBounds(240,80,100,30);
		
		
		lblNombre.setBounds(30,120,80,30);
		lblApellido.setBounds(30,160,80,30);		
		lblCorreo.setBounds(30,200,80,30);
		lblFace.setBounds(30,240,80,30);
		lblTwitter.setBounds(30,280,80,30);
		lblInstagram.setBounds(30,320,80,30);
		
		txtNombre.setBounds(110,120,100,30);
		txtApellido.setBounds(110,160,100,30);		
		txtCorreo.setBounds(110,200,100,30);
		txtFacebook.setBounds(110,240,100,30);
		txtTwitter.setBounds(110,280,100,30);
		txtInstagram.setBounds(110,320,100,30);
		btnCancelar.setBounds(75,370,100,50);
		btnGrabar.setBounds(225,370,100,50);
		txtNombre.setEditable(false);
		txtApellido.setEditable(false);
		txtCorreo.setEditable(false);
		txtFacebook.setEditable(false);
		txtTwitter.setEditable(false);
		txtInstagram.setEditable(false);
		add(lblTitulo);
		add(lblNombre);
		add(lblApellido);
		add(lblTelefono);
		add(lblCorreo);
		add(lblFace);
		add(lblTwitter);
		add(lblInstagram);
		add(txtNombre);
		add(txtApellido);
		add(txtTelefono);
		add(txtFacebook);
		add(txtCorreo);
		add(txtTwitter);
		add(txtInstagram);
		add(btnCancelar);
		add(btnGrabar);
		add(lblFoto);
		add(btnBuscar);
		
	}
}

La ventana se vera Asi:

agenda3

Paso 8: Continuamos con la Clase PanelCambios:

import java.awt.Color;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class PanelCambios extends JPanel {
	public JLabel lblTitulo=new JLabel("CAMBIOS");
	public JLabel lblNombre=new JLabel("Nombre");
	public JLabel lblApellido=new JLabel("Apellido");
	public JLabel lblTelefono=new JLabel("Telefono");
	public JLabel lblCorreo=new JLabel("Correo");
	public JLabel lblFace=new JLabel("Facebook");
	public JLabel lblTwitter=new JLabel("Twitter");
	public JLabel lblInstagram=new JLabel("Instagram");
	public JTextField txtNombre=new JTextField();
	public JTextField txtApellido=new JTextField();
	public JTextField txtTelefono=new JTextField();
	public JTextField txtCorreo=new JTextField();
	public JTextField txtFacebook=new JTextField();
	public JTextField txtTwitter=new JTextField();
	public JTextField txtInstagram=new JTextField();
	public JButton btnCancelar=new JButton("Cancelar");
	public JButton btnGrabar=new JButton("Grabar");
	public JButton btnBuscar=new JButton("Buscar");
	public JLabel lblFoto=new JLabel("Foto Aqui");
	Border marco = BorderFactory.createLineBorder(Color.BLUE, 5);
	public ImageIcon foto;
	
	public PanelCambios(){
		setLayout(null);
		lblTitulo.setBounds(180,20,200,50);
		lblTitulo.setFont(new Font("Arial", 1, 25));
		lblFoto.setBorder(marco);
		lblFoto.setHorizontalAlignment(JLabel.CENTER);
		lblFoto.setBounds(230,130,200,200);
		
		lblTelefono.setBounds(30,80,80,30);
		txtTelefono.setBounds(110,80,100,30);
		btnBuscar.setBounds(240,80,100,30);
		
		
		lblNombre.setBounds(30,120,80,30);
		lblApellido.setBounds(30,160,80,30);		
		lblCorreo.setBounds(30,200,80,30);
		lblFace.setBounds(30,240,80,30);
		lblTwitter.setBounds(30,280,80,30);
		lblInstagram.setBounds(30,320,80,30);
		
		txtNombre.setBounds(110,120,100,30);
		txtApellido.setBounds(110,160,100,30);		
		txtCorreo.setBounds(110,200,100,30);
		txtFacebook.setBounds(110,240,100,30);
		txtTwitter.setBounds(110,280,100,30);
		txtInstagram.setBounds(110,320,100,30);
		btnCancelar.setBounds(75,370,100,50);
		btnGrabar.setBounds(225,370,100,50);
		add(lblTitulo);
		add(lblNombre);
		add(lblApellido);
		add(lblTelefono);
		add(lblCorreo);
		add(lblFace);
		add(lblTwitter);
		add(lblInstagram);
		add(txtNombre);
		add(txtApellido);
		add(txtTelefono);
		add(txtFacebook);
		add(txtCorreo);
		add(txtTwitter);
		add(txtInstagram);
		add(btnCancelar);
		add(btnGrabar);
		add(lblFoto);
		add(btnBuscar);
		
	}
}

La Ventana se Vera Asi:

agenda4

Paso 9: Ahora la clase PanelConsultas:

import java.awt.Font;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class PanelConsultas extends JPanel {
	public JLabel lblTitulo = new JLabel("CONSULTAS");
	public JLabel lblTelefono = new JLabel("Telefono");
	public JTextField txtTelefono = new JTextField();
	public JTable tabla=new JTable();
	public JScrollPane jsp;
	public DefaultTableModel modeloTabla;
	

	public PanelConsultas() {
		setLayout(null);
		
		
		modeloTabla=new DefaultTableModel(){
			public boolean isCellEditable(int fila, int columna){
				return false;
			}
		};
		modeloTabla.addColumn("Nombre:");
		modeloTabla.addColumn("Apellido:");
		modeloTabla.addColumn("Telefono:");
		modeloTabla.addColumn("Correo:");
		modeloTabla.addColumn("Facebook");
		modeloTabla.addColumn("Twitter");
		modeloTabla.addColumn("Instagram");
		
		tabla=new JTable(modeloTabla);
		jsp=new JScrollPane(tabla);
		jsp.setViewportView(tabla);
		lblTitulo.setBounds(160, 20, 200, 50);
		lblTitulo.setFont(new Font("Arial", 1, 25));
		lblTelefono.setBounds(30,80,80,30);
		txtTelefono.setBounds(110,80,100,30);
		jsp.setBounds(30,120,420,300);
		
		
		add(lblTitulo);
		add(lblTelefono);
		add(txtTelefono);
		add(jsp);
		
	}
}

La ventana se vera asi:

agenda5

Creamos las Clases  Ventana Foto y VentanaNuevoUsuario :

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;

import modelo.Modelo;

public class VentanaFoto extends JFrame{
	public JLabel lblFoto=new JLabel("Foto Aqui");
	Border marco = BorderFactory.createLineBorder(Color.BLUE, 5);
	public ImageIcon foto;
	Modelo modelo=new Modelo();
	
	public VentanaFoto(ImageIcon foto){
		setLayout(new BorderLayout() );
		lblFoto.setBorder(marco);
		add(lblFoto,BorderLayout.CENTER);
		lblFoto.setIcon(foto);
		setSize(350,350);
		setVisible(true);
	}


}
public class VentanaNuevoUsuario extends JFrame {
	Modelo modelo = new Modelo();
	public JLabel lblTitulo = new JLabel("Nuevo Usuario");
	public JLabel lblUsuario = new JLabel("Usuario:");
	public JLabel lblPassword = new JLabel("Password:");
	public JLabel lblConfPassword = new JLabel("Confirmar Password:");
	public JLabel lblTipo=new JLabel("Tipo de usuario");

	public JTextField txtUsuario = new JTextField();
	public JPasswordField txtPass = new JPasswordField();
	public JPasswordField txtConfPass = new JPasswordField();
	
	public JComboBox cmbtipo=new JComboBox();
	public JButton btnCancelar = new JButton("Cancelar");
	public JButton btnGrabar = new JButton("Grabar");

	public VentanaNuevoUsuario() {
		setTitle("Nuevo Usuario");
		setLayout(null);
		lblTitulo.setBounds(10, 20, 400, 50);
		lblTitulo.setFont(new Font("Arial", 1, 20));
		lblTitulo.setHorizontalAlignment(JLabel.CENTER);
		
		lblUsuario.setBounds(0,80,125,30);
		lblUsuario.setHorizontalAlignment(JLabel.RIGHT);
		lblPassword.setBounds(0,120,125,30);
		lblPassword.setHorizontalAlignment(JLabel.RIGHT);
		lblConfPassword.setBounds(0,160,125,30);
		lblConfPassword.setHorizontalAlignment(JLabel.RIGHT);
		
		txtUsuario.setBounds(130,80,100,30);
		txtPass.setBounds(130,120,100,30);
		txtConfPass.setBounds(130,160,100,30);
		
		btnCancelar.setBounds(250,80,100,30);
		btnGrabar.setBounds(250,120,100,30);
		
		lblTipo.setBounds(0,200,125,30);
		lblTipo.setHorizontalAlignment(JLabel.RIGHT);
		cmbtipo.addItem("Administrador");
		cmbtipo.addItem("Limitado");
		cmbtipo.setBounds(130,200,120,30);
		
		add(lblTitulo);
		add(lblUsuario);
		add(lblPassword);
		add(lblConfPassword);
		add(txtUsuario);
		add(txtPass);
		add(txtConfPass);
		add(btnCancelar);
		add(btnGrabar);
		add(cmbtipo);
		add(lblTipo);
		setSize(400,300);
		setVisible(true);
		acciones();
	}
	public void acciones(){
		btnCancelar.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				txtUsuario.setText("");
				txtPass.setText("");
				txtConfPass.setText("");
			}
		});
		btnGrabar.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String usuario=txtUsuario.getText();
				String pass=txtPass.getText();
				String confir=txtConfPass.getText();
				int tipo=cmbtipo.getSelectedIndex();
				if(usuario.equals("")||pass.equals("")||confir.equals("")){
					JOptionPane.showMessageDialog(null, "Favor de llenar todos los campos");
				}else{
					if(pass.equals(confir)){
						modelo.nuevoUsuario(usuario,pass,tipo);
						setVisible(false);						
						
					}else{
						JOptionPane.showMessageDialog(null, "Las contraseñas no Coinciden");
					}
				}
			}
		});
	}

}

 

Paso 10: 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:

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..

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class VentanaPrincipal extends JFrame{
	public PanelLogin panelLogin;
	public PanelAltas panelAltas=new PanelAltas();
	public PanelBajas panelBajas=new PanelBajas();
	public PanelCambios panelCambios=new PanelCambios();
	public PanelConsultas panelConsultas=new PanelConsultas();
	
	public JMenuBar barraMenu=new JMenuBar();
	public JMenu mnAdministracion=new JMenu("Administracion");
	public JMenu mnAgenda=new JMenu("Agenda");
	public JMenu mnUsuarios=new JMenu("Agenda");
	public JMenuItem mnNuevoUser=new JMenuItem("Nuevo Usuario");
	public JMenuItem mnEliminarUser=new JMenuItem("Eliminar Usuario");
	public JMenu mnSesion=new JMenu("Sesion");
	public JMenuItem mnCerrarSesion=new JMenuItem("Cerrar Sesion");
	public JMenuItem mnAltas=new JMenuItem("Altas");
	public JMenuItem mnBajas=new JMenuItem("Bajas");
	public JMenuItem mnCambios=new JMenuItem("Cambios");
	public JMenuItem mnConsultas=new JMenuItem("Consultas");
	
	public JTabbedPane pestanas=new JTabbedPane(); 
	public JPanel panelCarta=new JPanel();
	public CardLayout cartas=new CardLayout();
	Image imagen;
	public VentanaPrincipal(){
		setLayout(new BorderLayout());
		pestanas.insertTab("Altas",null,panelAltas,"Altas",0);
		pestanas.insertTab("Bajas",null,panelBajas,"Bajas",1);
		pestanas.insertTab("Cambios",null,panelCambios,"Cambios",2);
		pestanas.insertTab("Consultas",null,panelConsultas,"Consultas",3);
		
		setJMenuBar(barraMenu);
		barraMenu.add(mnAdministracion);
		barraMenu.add(mnAgenda);
		
		mnUsuarios.add(mnNuevoUser);
		mnUsuarios.add(mnEliminarUser);
		mnSesion.add(mnCerrarSesion);
		
		mnAdministracion.add(mnUsuarios);
		mnAdministracion.add(mnSesion);
		
		mnAgenda.add(mnAltas);
		mnAgenda.add(mnBajas);
		mnAgenda.add(mnCambios);
		mnAgenda.add(mnConsultas);
		
		
		barraMenu.setVisible(false);
		mnAgenda.setEnabled(false);
		mnUsuarios.setEnabled(false);
		/**
                * el codigo de a continuacion sirve para
                * insertar una imagen de fondo,
                * en este caso es el panel login
                **/ 

		panelLogin=new PanelLogin(){
			public void paintComponent(Graphics g){
				g.drawImage(imagen,0,0,
					this.getWidth(),
					this.getHeight(),null);
			}
		};
		imagen=new ImageIcon("./imagenes/sepiente.jpg").getImage();
		repaint();
                //aqui termina el codigo para la imagen

		panelCarta.setLayout(cartas);
		panelCarta.add(panelLogin,"login");
		panelCarta.add(pestanas,"todo");
		
		
		
		add(panelCarta,BorderLayout.CENTER);
		setSize(500,530);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

Con esto hemos terminado por ahora la Parte Gráfica de 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 que no tendrá todavía ninguna acción.

Ahora iniciamos con la Parte importante de nuestro Programa las ACCIONES

Paso 11: Para poder trabajar con base de datos sera necesario descargar nuestro conector de base de datos dando clic en el siguiente link:

https://dev.mysql.com/downloads/connector/j/

Elegimos en la pagina la opción de ZIP, una vez descargado el archivo lo abrimos con cualquir programa de compresión de archivo en mi caso uso WINRAR, y dentro de la carpeta: mysql-connector-java- encontraran un archivo con extencion JAR, el cual descomprimimos en cualquier lugar de nuestra maquina de preferencia C:\

Una vez que tengamos el Archivo procederemos a dar Clic Derecho sobre el Proyecto en el que estamos trabajando en eclipse, Seleccionamos la Opcion BUILD PATH – CONFIGURE BUILD PATH se abrira la siguiente ventana:

agenda8

Elegimos la Pestaña Libraries y dentro de esta pestaña damos clic en el botón Add External Jars se abrirá el dialogo para elegir un archivo en el cual buscaremos y elegiremos el archivo del que descomprimimos.  y Damos OK.


Antes de Continuar deberemos crear nuestra base de datos que Llamaremos agenda con las siguientes Tablas:

contactos

basedatos1usuarios
basedatos2

Paso 12: Creamos la Clase Modelo dentro del paquete del mismo nombre que sera la encargada de comunicarnos con la base de datos, y creamos en ella los siguientes objetos:

  1. Connection Conector; que sera el encargado de realizar la conexión a la base de datos:
  2. Statement ejecutador; que es el encargado de realizar la acciones en la base de datos:
  3. ResulSet capturador; es el que recibirá los datos desde la base de datos.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.table.DefaultTableModel;

public class Modelo {
	ResultSet capturador;
	Statement ejecutador;
	Connection conector;
	public String nombre;
	public String apellido;
	public String telefono;
	public String correo;
	public String facebook;
	public String twitter;
	public String instagram;
	public String foto;
	public int tipoUsuario=-1;

Paso 13: creamos el método conexionBd que recibirá los parámetros usuarios y contraseña de la base de datos a la cual nos vamos a conectar.

public Connection conexionBd(String user, String pass) {

		try {
			Class.forName("com.mysql.jdbc.Driver");
			conector = DriverManager
				.getConnection(
					"jdbc:mysql://localhost/agenda?user="
					+ user + "&password=" + pass + "");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conector;

	}

Paso 14:  En el constructor de la Clase Modelo mandamos llamar al método ConexionBd  mandando le el usuario y la contraseña de nuestra base de datos, para que se conecte cuando se cree el objeto.

public Modelo() {
		conexionBd("root", "123");
	}

Ahora empezamos a crear todos los métodos que nos ayudaran a trabajar con la Base de Datos

Paso 15: Creamos el método Login el cual nos responderá verdadero o falso dependiendo de si existe o no el usuario..

public boolean login(String usuario, String pass) {
	boolean respuesta = false;
		try{
		     ejecutador = conector.createStatement();
		     capturador = ejecutador
				.executeQuery("select pass,tipo from usuarios where usuario='"
								+ usuario + "';");
				if (capturador.first()) {
					if (capturador.getString(1).equals(pass)) {
						respuesta = true;
						tipoUsuario=capturador.getInt(2);
					}
				}
	 
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return respuesta;
	}

Paso 16: Ahora creamos el métodoALTAS el cual sera el que reciba la información para mandarla a la base de datos.

public void altas(String nombre, String apellido, String telefono,
			String correo, String facebook, String twitter, String instagram,
			String foto) {
		
 
		try {
 
		ejecutador = conector.createStatement();
		ejecutador.executeUpdate("insert into contactos values(null,'"
				+ nombre + "','" + apellido + "','" + telefono + "','"
				+ correo + "','" + facebook + "','" + twitter + "','"
				+ instagram + "','" + foto + "')");
		} catch (SQLException e) {
			e.printStackTrace();
		}
 
	}

Paso 17: Creamos el método Bajas

public void bajas(String telefono) {
		try {
			ejecutador = conector.createStatement();
			ejecutador.execute("delete from contactos where telefono='"
					+ telefono + "';");
 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Paso 18: Creamos el método Buscar :

public boolean buscar(String telefono) {
		boolean respuesta = false;
		try {
			ejecutador = conector.createStatement();
			capturador = ejecutador
					.executeQuery("select *from contactos where telefono='"
							+ telefono + "';");
			if (capturador.first()) {
				nombre = capturador.getString(capturador.findColumn("nombre"));
				apellido = capturador.getString(capturador
						.findColumn("apellido"));
				correo = capturador.getString(capturador.findColumn("correo"));
				facebook = capturador.getString(capturador
						.findColumn("facebook"));
				twitter = capturador
						.getString(capturador.findColumn("twitter"));
				instagram = capturador.getString(capturador
						.findColumn("instagram"));
				foto = capturador.getString(capturador.findColumn("foto"));
				respuesta = true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return respuesta;
	}

Paso 19: Creamos el método Cambios:

public void cambios(String nombre, String apellido, String correo,String telefono,
			String facebook, String twitter, String instagram, String foto, String telmodificar) {
			// CORREGIR LA RUTA
				
		try {
			ejecutador = conector.createStatement();
			ejecutador
					.executeUpdate("update contactos set                           nombre='"+nombre+"', " +
							"apellido='"+apellido+"', correo='"+correo+"', " +
							"facebook='"+facebook+"', twitter='"+twitter+"', " +
							"instagram='"+instagram+"', foto='"+foto+"' where telefono='"+telmodificar+"';");
 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
	}

Paso 20: Creamos el método Consultas:

        NOTA: Este método retorna una objeto de la clase DefaultTableModel que nos permitirá insertar los valores a la base de datos.

public DefaultTableModel consultas(String tel) {
		Object[] filas = new Object[7];
		DefaultTableModel modeloTabla = new DefaultTableModel();
		try {
			ejecutador = conector.createStatement();
			capturador =ejecutador
					.executeQuery("select *from contactos where telefono like '"+tel+"%';");
			modeloTabla.addColumn("Nombre");
			modeloTabla.addColumn("Apellido");
			modeloTabla.addColumn("Telefono");
			modeloTabla.addColumn("Correo");
			modeloTabla.addColumn("Facebook");
			modeloTabla.addColumn("Twitter");
			modeloTabla.addColumn("Instagram");
			while (capturador.next()) {
				filas[0] = capturador.getString(2);
				// System.out.println(capturador.getString(2));
				filas[1] = capturador.getString(3);
				// System.out.println(capturador.getString(3));
				filas[2] = capturador.getString(4);
				// System.out.println(capturador.getString(4));
				filas[3] = capturador.getString(5);
				filas[4] = capturador.getString(6);
				filas[5] = capturador.getString(7);
				filas[6] = capturador.getString(8);
				// System.out.println(capturador.getString(5));
				modeloTabla.addRow(filas);
 
			}
 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return modeloTabla;
 
	}

Paso 21: Creamos el método BuscarFoto, que es que nos permitirá mostrar la fotografía del contacto cuando le demos clic en la tabla de consultas:

public boolean buscarFoto(String telefono) {
		boolean respuesta = false;
		try {
			ejecutador = conector.createStatement();
			capturador = ejecutador
					.executeQuery("select foto from contactos where telefono='"
							+ telefono + "';");
			if (capturador.first()) {
				foto = capturador.getString(capturador.findColumn("foto"));
				respuesta = true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return respuesta;
	}

Paso 22:  ahora crearemos los métodos EliminarUsuario y NuevoUsuario 

public void nuevoUsuario(String usuario, String pass, int tipo){
		try {
			ejecutador=conector.createStatement();
			ejecutador.execute("insert into usuarios values(null,'"+usuario+"','"+pass+"',"+tipo+");");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
public void eliminarUsuario(String usuario){
		try {
			ejecutador=conector.createStatement();
			ejecutador.execute("delete from usuarios where usuario='"+usuario+"';");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Antes de continuar con la clase Controlador crearemos una clase llamada CorregirRuta dentro del paquete modelo que quedaría de la siguiente manera:

import java.util.StringTokenizer;

public class CorregirRuta {
	 String ruta, separador, nuevoSeparador; 
	 
	    public CorregirRuta(String laruta, String sep, String nuevoSep)
	    {
	        ruta=laruta;
	        separador=sep;
	        nuevoSeparador=nuevoSep;
	    }
	 
	    public String obtenerRutaCorregidaWindows()
	    {
	         StringTokenizer tokens=new StringTokenizer(ruta, separador);
	         //Para guardar la ruta corregida
	         String rutaCorregida = new String();
	         //Contar los tokens (en este caso las carpetas, contado tambien
	         // el nombre del archivo seleccionado).
	         int noTokens = tokens.countTokens();
	         int i = 1;
	         do
	         {      //Agregar el nuevo separador
	            rutaCorregida += tokens.nextToken()+nuevoSeparador;
	            i++;
	         }while(i<noTokens);
	         //Agregar a la ruta corregida el ultimo token, (nombre del archivo)
	         rutaCorregida += tokens.nextToken();       
	         //Mostrar la ruta corregida en la consola
	        // System.out.println(rutaCorregida+"\n"+noTokens+ " tokens");
	         return rutaCorregida;
	    }
}

esta clase se utilizara para corregir la dirección de la imagen ya que Mysql no reconoce las «\» 

Con esto terminamos la Clase modelo ahora solo nos queda dar la acciones a todos los botones del programa para que esta agenda funcione.

Le daremos acciones a los botones por Ventana..

Paso 23: Creamos la clase Controlador dentro del paquete del mismo Nombre en el cual creamos los siguientes objetos:

import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTable;

import modelo.CorregirRuta;
import modelo.Modelo;
import vista.VentanaFoto;
import vista.VentanaNuevoUsuario;
import vista.VentanaPrincipal;

public class Controlador {
       VentanaPrincipal ventana = new VentanaPrincipal();
	Modelo modelo = new Modelo();
	String usuarioActivo = null;
	String url;
	String foto;

 

Paso 24:  Crearemos el método AccionesBotones() dentro de la clase Controlador  y agregaremos las acciones de los botones, Empezaremos con LOGIN:

public void accionesBotones(){
ventana.panelLogin.btnLogin.addActionListener(new ActionListener() {
 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String usuario = ventana.panelLogin.txtUsuario.getText();
				String password = ventana.panelLogin.txtPass.getText();
				if (modelo.login(usuario, password)) {
					if (modelo.tipoUsuario == 0) {
						ventana.cartas.show(ventana.panelCarta, "todo");
						ventana.barraMenu.setVisible(true);
						ventana.mnAgenda.setEnabled(true);
						ventana.mnUsuarios.setEnabled(true);
						ventana.pestanas.setEnabledAt(0,true);
						ventana.pestanas.setEnabledAt(1,true);
						ventana.pestanas.setEnabledAt(2,true);
						usuarioActivo=usuario;
					} else {
						ventana.barraMenu.setVisible(true);
						ventana.pestanas.setEnabledAt(0,false);
						ventana.pestanas.setEnabledAt(1,false);
						ventana.pestanas.setEnabledAt(2,false);						
						ventana.pestanas.setSelectedIndex(3);
						ventana.cartas.show(ventana.panelCarta, "todo");
						usuarioActivo=usuario;
					}
				} else {
					JOptionPane.showMessageDialog(null, "Acceso Denegado",
							null, JOptionPane.ERROR_MESSAGE);
					ventana.panelLogin.txtUsuario.setText("");
					ventana.panelLogin.txtPass.setText("");
				}
			}
		});

Paso 25:  Le damos ahora acciones a los botones del PanelAltas cabe mencionar que le agregamos acción aun componente JLABEL del tipo MouseListener

ventana.panelAltas.btnGrabar.addActionListener(new ActionListener() {
	 
	@Override
	public void actionPerformed(ActionEvent arg0) {
		String nombre = ventana.panelAltas.txtNombre.getText();
		String apellido = ventana.panelAltas.txtApellido.getText();
		String telefono = ventana.panelAltas.txtTelefono.getText();
		String correo = ventana.panelAltas.txtCorreo.getText();
		String facebook = ventana.panelAltas.txtFacebook.getText();
		String twitter = ventana.panelAltas.txtTwitter.getText();
		String instagram = ventana.panelAltas.txtInstagram.getText();
		modelo.altas(nombre, apellido, telefono, correo, facebook,
				twitter, instagram, url);
		ventana.panelAltas.txtNombre.setText("");
		ventana.panelAltas.txtApellido.setText("");
		ventana.panelAltas.txtTelefono.setText("");
		ventana.panelAltas.txtCorreo.setText("");
		ventana.panelAltas.txtFacebook.setText("");
		ventana.panelAltas.txtTwitter.setText("");
		ventana.panelAltas.txtInstagram.setText("");
		ventana.panelAltas.lblFoto.setIcon(null);

	}
});
ventana.panelAltas.btnCancelar.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		ventana.panelAltas.txtNombre.setText("");
		ventana.panelAltas.txtApellido.setText("");
		ventana.panelAltas.txtTelefono.setText("");
		ventana.panelAltas.txtCorreo.setText("");
		ventana.panelAltas.txtFacebook.setText("");
		ventana.panelAltas.txtTwitter.setText("");
		ventana.panelAltas.txtInstagram.setText("");
		ventana.panelAltas.lblFoto.setIcon(null);
	}
});
ventana.panelAltas.lblFoto.addMouseListener(new MouseListener() {

	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent arg0) {
		JFileChooser eleccion = new JFileChooser();

		int opc;
		opc = eleccion.showOpenDialog(null);
		if (opc == eleccion.APPROVE_OPTION) {
			url = eleccion.getSelectedFile().toString();

			ventana.panelAltas.foto = new ImageIcon(url);
			ventana.panelAltas.lblFoto.setText("");
			ventana.panelAltas.lblFoto.setIcon(ventana.panelAltas.foto);
		}
		CorregirRuta ruta1 = new CorregirRuta(url, "\\", "\\\\");
		foto = ruta1.obtenerRutaCorregidaWindows();

	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}
});

Paso 26: Ahora las acciones de los elementos de BAJAS.

ventana.panelBajas.btnBuscar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String telefono = ventana.panelBajas.txtTelefono.getText();
				if (modelo.buscar(telefono)) {
					ventana.panelBajas.txtNombre.setText(modelo.nombre);
					ventana.panelBajas.txtApellido.setText(modelo.apellido);
					ventana.panelBajas.txtCorreo.setText(modelo.correo);
					ventana.panelBajas.txtFacebook.setText(modelo.facebook);
					ventana.panelBajas.txtTwitter.setText(modelo.twitter);
					ventana.panelBajas.txtInstagram.setText(modelo.instagram);
					foto = modelo.foto;
					ventana.panelBajas.foto = new ImageIcon(foto);
					ventana.panelBajas.lblFoto.setIcon(ventana.panelBajas.foto);
					ventana.panelBajas.btnGrabar.setEnabled(true);
				} else {
					JOptionPane.showMessageDialog(null,
							"Telefono no Localizado");
					ventana.panelBajas.txtTelefono.setText("");

				}
			}
		});
		ventana.panelBajas.btnGrabar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				String telefono = ventana.panelBajas.txtTelefono.getText();
				modelo.bajas(telefono);
				ventana.panelBajas.txtNombre.setText("");
				ventana.panelBajas.txtApellido.setText("");
				ventana.panelBajas.txtCorreo.setText("");
				ventana.panelBajas.txtFacebook.setText("");
				ventana.panelBajas.txtTwitter.setText("");
				ventana.panelBajas.txtInstagram.setText("");
				ventana.panelBajas.lblFoto.setIcon(null);
				ventana.panelBajas.txtTelefono.setText("");
				ventana.panelBajas.btnGrabar.setEnabled(false);

			}
		});
		ventana.panelBajas.btnCancelar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				ventana.panelBajas.txtNombre.setText("");
				ventana.panelBajas.txtApellido.setText("");
				ventana.panelBajas.txtCorreo.setText("");
				ventana.panelBajas.txtFacebook.setText("");
				ventana.panelBajas.txtTwitter.setText("");
				ventana.panelBajas.txtInstagram.setText("");
				ventana.panelBajas.lblFoto.setIcon(null);
				ventana.panelBajas.txtTelefono.setText("");
				ventana.panelBajas.btnGrabar.setEnabled(false);

			}
		});

Paso 27: Ahora creamos las acciones de CAMBIOS.

ventana.panelCambios.btnBuscar.addActionListener(new ActionListener() {
	 
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		String telefono = ventana.panelCambios.txtTelefono.getText();
		if (modelo.buscar(telefono)) {
			ventana.panelCambios.txtNombre.setText(modelo.nombre);
			ventana.panelCambios.txtApellido.setText(modelo.apellido);
			ventana.panelCambios.txtCorreo.setText(modelo.correo);
			ventana.panelCambios.txtFacebook.setText(modelo.facebook);
			ventana.panelCambios.txtTwitter.setText(modelo.twitter);
			ventana.panelCambios.txtInstagram.setText(modelo.instagram);
			foto = modelo.foto;
			ventana.panelCambios.foto = new ImageIcon(foto);
			ventana.panelCambios.lblFoto
					.setIcon(ventana.panelCambios.foto);
			ventana.panelCambios.btnGrabar.setEnabled(true);
			ventana.panelCambios.txtTelefono.setEditable(false);
		} else {
			JOptionPane.showMessageDialog(null,
					"Telefono no Localizado");
			ventana.panelCambios.txtTelefono.setText("");

		}
	}
});
ventana.panelCambios.btnCancelar
		.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				ventana.panelCambios.txtNombre.setText("");
				ventana.panelCambios.txtApellido.setText("");
				ventana.panelCambios.txtCorreo.setText("");
				ventana.panelCambios.txtFacebook.setText("");
				ventana.panelCambios.txtTwitter.setText("");
				ventana.panelCambios.txtInstagram.setText("");
				ventana.panelCambios.lblFoto.setIcon(null);
				ventana.panelCambios.txtTelefono.setText("");
				ventana.panelCambios.btnGrabar.setEnabled(false);
				ventana.panelCambios.txtTelefono.setEditable(true);

			}
		});
ventana.panelCambios.btnGrabar.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		String telefono = ventana.panelCambios.txtTelefono.getText();
		String nombre = ventana.panelCambios.txtNombre.getText();
		String apellido = ventana.panelCambios.txtApellido.getText();
		String correo = ventana.panelCambios.txtCorreo.getText();
		String facebook = ventana.panelCambios.txtFacebook.getText();
		String twitter = ventana.panelCambios.txtTwitter.getText();
		String instagram = ventana.panelCambios.txtInstagram.getText();

		modelo.cambios(nombre, apellido, correo, telefono, facebook,
				twitter, instagram, foto,telefono);

		ventana.panelCambios.txtNombre.setText("");
		ventana.panelCambios.txtApellido.setText("");
		ventana.panelCambios.txtCorreo.setText("");
		ventana.panelCambios.txtFacebook.setText("");
		ventana.panelCambios.txtTwitter.setText("");
		ventana.panelCambios.txtInstagram.setText("");
		ventana.panelCambios.lblFoto.setIcon(null);
		ventana.panelCambios.txtTelefono.setText("");
		ventana.panelCambios.btnGrabar.setEnabled(false);
		ventana.panelCambios.txtTelefono.setEditable(true);
		ventana.panelCambios.lblFoto.setIcon(null);

	}
});

ventana.panelCambios.lblFoto.addMouseListener(new MouseListener() {

	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent arg0) {
		JFileChooser eleccion = new JFileChooser();

		int opc;
		opc = eleccion.showOpenDialog(null);
		if (opc == eleccion.APPROVE_OPTION) {
			url = eleccion.getSelectedFile().toString();

			ventana.panelCambios.foto = new ImageIcon(url);
			ventana.panelCambios.lblFoto.setText("");
			ventana.panelCambios.lblFoto
					.setIcon(ventana.panelCambios.foto);
		}
		CorregirRuta ruta1 = new CorregirRuta(url, "\\", "\\\\");
		foto = ruta1.obtenerRutaCorregidaWindows();

	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}
});

Paso 28: Ahora las acciones de Consultas, en esta clase no usaremos ningún botón si no que le diremos al JTextField  y a nuestra JTABLE que hagan las acciones..

ventana.panelConsultas.txtTelefono.addKeyListener(new KeyListener() {
	 
	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		String telefono = ventana.panelConsultas.txtTelefono.getText();

		ventana.panelConsultas.tabla.setModel(modelo
				.consultas(telefono));

	}

	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub

	}
});
ventana.panelConsultas.tabla.addMouseListener(new MouseAdapter() {

	public void mousePressed(MouseEvent Mouse_evt) {
		JTable table = (JTable) Mouse_evt.getSource();
		Point point = Mouse_evt.getPoint();
		int row = table.rowAtPoint(point);
		if (Mouse_evt.getClickCount() == 2) {
			String telefono = ventana.panelConsultas.tabla.getValueAt(
					ventana.panelConsultas.tabla.getSelectedRow(), 2)
					.toString();

			if (modelo.buscarFoto(telefono)) {
				foto = modelo.foto;
				ImageIcon imgfoto = new ImageIcon(foto);
				new VentanaFoto(imgfoto);
			}
		}
	}
});

Paso 29: Por ultimo las acciones del los MenuItem que son los botones de los Menus:

ventana.mnNuevoUser.addActionListener(new ActionListener() {
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		new VentanaNuevoUsuario();
		
	}
});
ventana.mnEliminarUser.addActionListener(new ActionListener() {
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		String usuario=JOptionPane.showInputDialog("Ingresa el Usuario a Eliminar");
		if(usuario.equals(usuarioActivo)){
			JOptionPane.showMessageDialog(null, "Este usuario no se Puede Eliminar \npor que esta Activo");
		}else{					
			int opcion=JOptionPane.showConfirmDialog(null, "Deseas Eliminar a este Usuario?");
			if(opcion==0){
				modelo.eliminarUsuario(usuario);
				usuarioActivo="";
				JOptionPane.showMessageDialog(null, "!!Usuario Eliminado!!");
			}
		}
		
	}
});
ventana.mnCerrarSesion.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		ventana.cartas.show(ventana.panelCarta, "login");
		ventana.barraMenu.setVisible(false);
		ventana.mnAgenda.setEnabled(false);
		ventana.mnUsuarios.setEnabled(false);
		usuarioActivo="";
	}
});
ventana.mnAltas.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		ventana.pestanas.setSelectedIndex(0);
	}
});
ventana.mnBajas.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		ventana.pestanas.setSelectedIndex(1);
	}
});
ventana.mnCambios.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		ventana.pestanas.setSelectedIndex(2);
	}
});
ventana.mnConsultas.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		ventana.pestanas.setSelectedIndex(3);
	}
});
}

}

PASO FINAL

Bueno ya con esto hemos terminado nuestra Agenda Telefónica, solo queda modificar nuestra clase AUXILIAR en el Paquete Controlador. crear el objeto de Controlador y mandar Llamar el método accionesBotones. y obtendremos.

package controlador;

public class Auxiliar {
	public static void main(String[] args) {
		Controlador objeto=new Controlador();
		objeto.accionesBotones();
	}
}

 

 NOTA: Para que se pueda ver la Imagen deberás crear la carpeta Imágenes dentro del proyecto, en la mismo ubicación de las carpetas:

carpeta

@autor Prof. Luis. Mitre

Contador de visitas y estadísticas