Usuario:ManuelRomero/Interfaz

De WikiEducator
Saltar a: navegación, buscar



Interfaz Cliente clase ICliente

  • Definimos los elementos gráficos
  • Asociamos eventos a los botones
  • Escribimos el código de cada evento
  • Mantenemos relación con objetos de otras clases (Conexion Cliente)
  • Escribimos el método main
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.Event.*;
import java.sql.*;
 
 
/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class ICliente extends JFrame{
 
 
		//	Definición de objetos gráficos para el interfaz
		private JLabel lNum = new JLabel ("Número");
		private JTextField  tNum = new JTextField(5);
		private JLabel lApellido = new JLabel("Apellido");
		private JTextField tApellido = new JTextField (5);
		private JLabel lNombre = new JLabel("Nombre");
		private JTextField tNombre = new JTextField (5);
		private JFormattedTextField tDNI;
		private JLabel lDNI= new JLabel ("DNI");
		private JTextField tDireccion = new JTextField(10);
		private JLabel lDireccion = new JLabel("Dirección");
 
		private JButton bPrimero = new JButton("primero");
		private JButton bAnterior = new JButton("anterior");
		private JButton bSiguiente= new JButton("siguiente");
		private JButton bUltimo = new JButton("ultimo");
		private JButton bInsertar= new JButton("insertar");
		private JButton bNuevo = new JButton("nuevo");
 
		private JLabel lTitulo = new JLabel("Clientes y sus cuentas bancarias");
 
 
 
		//Paneles contenedores además del contenedor principal que es el frame
		private JPanel pDatos = new JPanel();
		private JPanel pBotones = new JPanel();
		private JPanel pCuentas = new JPanel();
 
 
		//		Layout para distribución de objetos en el contenedor	
 
		//Definimos los layouts que vamos a utilizar
 
		private BoxLayout lPpal = new BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS);
		private BoxLayout bxL = new BoxLayout(this.getContentPane(),BoxLayout.LINE_AXIS);
		private GridBagLayout pDatosLayout = new GridBagLayout();
		private FlowLayout lPBotones = new FlowLayout();
 
 
		//Objetos para los menús
		private JMenuItem mIDesconectar= new JMenuItem("Desconectar");
		private JMenuItem mIConectar= new JMenuItem("Conectar");
		private JMenu mPpal= new JMenu("Bases de datos");
		private JMenuBar barraMenu = new JMenuBar();
 
 
 
	//para poderme comunciar con otras clases	
		private Conexion conexion; //static para poder ser usada en el main que es static
		private Cliente cliente = new Cliente();
		private ResultSet clientes; //Para trabajar con el resultado de una consulta concreta
 
 
 
		//Objetos para el jTable y DefaultTableModel
 
		private DefaultTableModel modelo = new DefaultTableModel();
		private JTable taCuentas = new JTable(modelo);
		private JScrollPane scroll;
 
 
 
 
 public ICliente(){
	//Ponemos los layout
 
	// pBotones.setLayout(fL);
	 //Añadimos los layout
 
	 //Le añadimos el layout a la ventana principal
        setLayout(lPpal);
 
 
     //Pongo el label del título de la página en grande
        //y lo añadimos
		lTitulo.setFont(new java.awt.Font("Segoe UI",3,26));
		lTitulo.setForeground(new java.awt.Color(128,128,192));
		lTitulo.setPreferredSize(new java.awt.Dimension(571, 36));
		lTitulo.setAlignmentY(0.0f);
		add(lTitulo);
 
		this.setJMenuBar(barraMenu);
 
 
 
 
 
 
		crearPanelBotones();
		crearPanelDatos();
		crearPanelCuentas();
		creaMenu();
     //Agregamos los paneles al JFrame principal
 
 
		add(pDatos);
		add(pCuentas);
        add(pBotones);
 
     //Colocamos y visualizamos el JFrame
     this.setBounds(0, 0, 600, 335);
     setTitle("Recorrido de la tabla Clientes");
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setVisible(true);
 
 
     //Agregamos este objeto a los botones desde los que quieremos recoger el evento
 
 
     //Realizamos la consulta para después moverme sobre ella (avanzar o retroceder).
 
 
 }
 /**
  * Este método crea el panel de los botones
  */
 private void crearPanelBotones(){
	 pBotones.setLayout(lPBotones);
 
	 //Ponemos un border al panel de botones
 
	 pBotones.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, new java.awt.Color(255,128,64), new java.awt.Color(255,128,64), new java.awt.Color(255,128,64), new java.awt.Color(255,128,64)));
     pBotones.setPreferredSize(new java.awt.Dimension(584, 39));
 
 
     //primero los contenidos a los paneles
     pBotones.add(bPrimero);
     pBotones.add(bSiguiente);
     pBotones.add(bAnterior);
     pBotones.add(bUltimo);
 
     //Añadimos a los botones los eventos
     bPrimero.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				clickPrimero();
				//TODO add your code for mIConectar.actionPerformed
			}
});
     bAnterior.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				clickAnterior();
				//TODO add your code for mIConectar.actionPerformed
			}
});
     bSiguiente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				clickSiguiente();
				//TODO add your code for mIConectar.actionPerformed
			}
});
     bUltimo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				clickUltimo();
				//TODO add your code for mIConectar.actionPerformed
			}
});
 }
 
 public void crearPanelDatos(){
 
     pDatos.setLayout(pDatosLayout);
 
     pDatos.setBorder(BorderFactory.createTitledBorder(null, "Datos Cliente", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI",3,14), new java.awt.Color(0,0,255)));
     pDatos.setPreferredSize(new java.awt.Dimension(912, 147));
     pDatosLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1};
     pDatosLayout.rowHeights = new int[] {7, 7, 7, 7};
     pDatosLayout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1};
     pDatosLayout.columnWidths = new int[] {7, 7, 7, 7};
 
 
 
     pDatos.add(lNum, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
     lNum.setText("Número de cliente");
     pDatos.add(tNum, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
     pDatos.add(lNombre, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 2, 0, 0), 0, 0));
     pDatos.add(tNombre, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
     pDatos.add(lApellido, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
     pDatos.add(tApellido, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
   	 pDatos.add(lDireccion, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
 
   	 tDireccion = new JTextField();
   	 pDatos.add(tDireccion, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
   	 tDireccion.setColumns(10);
 
   	 pDatos.add(lDNI, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
 
   	 tDNI = new JFormattedTextField();
   	 pDatos.add(tDNI, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
   	 tDNI.setColumns(10);
 }
 
 public void crearPanelCuentas(){
	 	pCuentas.setBorder(BorderFactory.createTitledBorder("Cuentas Bancarias de cliente"));
		modelo = new DefaultTableModel();
		taCuentas = new JTable(modelo);
		taCuentas.setPreferredScrollableViewportSize(new Dimension(500,50));
		scroll = new JScrollPane(taCuentas);
		pCuentas.add(scroll);
	    getContentPane().add(pCuentas);
	    pCuentas.setSize(584, 200);
	    pCuentas.setPreferredSize(new java.awt.Dimension(584, 500));
	    getContentPane().add(pCuentas);
 
 }
 
 public void creaMenu(){
 
		 mPpal.add(mIConectar);
		 mPpal.add(mIDesconectar);
		 barraMenu.add(mPpal);
 		 mIConectar.addActionListener(new ActionListener() {
    					public void actionPerformed(ActionEvent evt) {
    						clickConectar();
    						//TODO add your code for mIConectar.actionPerformed
    					}
    	});
		mIDesconectar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					clickDesconectar();
					//TODO add your code for mIConectar.actionPerformed
				}
});
 
     //Cremos un objeto escuchador de la interfaz ActionListener
 
 }
 public void cargaDatos(Cliente c){
	 tNombre.setText(c.getNombre());
	 tApellido.setText(c.getApellido());
	 tNum.setText(c.getNumero().toString());
 
 }
 private void clickDesconectar(){
 
 }
 
private void clickSiguiente(){
	//Verifico que no estoy en el último
	try{
	if (clientes.isLast()){
		JOptionPane.showMessageDialog(null,"Estás en el último");
	}else
		clientes.next();
	    cliente.setDatosCliente(clientes);
	    cargarCliente();
 
 
 
	}catch(SQLException e){
		System.out.println("Error en clickSiguiente "+e.getMessage());
	}
 
 
}
 
private void clickPrimero(){
 
}
private void clickAnterior(){
 
}
private void clickUltimo(){
 
}
 
private void clickConectar(){
	 try{
	 System.out.println("Intentando conectar");
		if (conexion==null){
			conexion = new Conexion();
			clientes = conexion.hacerConsulta("Select * from clientes");
			  System.out.println("Creada consulta y consultado clientes");
 
			if (clientes.next()){
				 cliente.setDatosCliente(clientes);
				 cargarPrimerCliente();
			}
			else{
				System.out.println("Actualmente no hay clientes");
			}
		}
		else
			JOptionPane.showMessageDialog(this,"Actualmente conectado a la BD");
		}
		catch(SQLException e){
			  System.out.println("Error haciendo la conexión en interfaz");
		}
 }
 private void cargarPrimerCliente(){
	 try{
/*	 if (clientes.isFirst())
		 JOptionPane.showMessageDialog(this,"Este es el primer registro");
	 else
	 */
		 if (clientes.first()){
		    cargarCliente();	 
 
	     }
	 }catch(SQLException e){
		 System.out.println("Visualizando el primero cliente");
	 }
 }
 
 private void cargarCliente(){
 
	 tNum.setText(""+cliente.getNumero());
	 tNombre.setText(cliente.getNombre());
	 tApellido.setText(cliente.getApellido());
	 tDireccion.setText(cliente.getDireccion());
	 tDNI.setText(cliente.getDni());
	 try{
	 System.out.println("Valor del cliente antes "+clientes.getString("nombre"));
	 rellenaCuentasSocio(cliente.getNumero());
 
	 }catch(SQLException e){
		 System.out.println("En carga cliente "+e.getMessage());
	 }
 
 }
 
private void rellenaCuentasSocio(int numSocio){
	 //Obetener información de un meta
try{
	//Para inicializar el modelo a 0 filas y 0 columnas 
	//(Para perder los datos anteriores)
	modelo.setRowCount(0);
	modelo.setColumnCount(0);
 
	//Creamos un nuevo resultset para recuperar en una consulta
	//Las cuentas del socio actual
 
 	 ResultSet ccc;
 	 System.out.println("Valor del socio antes de hacer ccc"+clientes.getString(1));
	 ccc=conexion.hacerConsulta("Select * from cuentaBancaria where cliente = "+numSocio);
	 System.out.println("Valor del socio  despues de ccc"+clientes.getString(1));
 
	 //Necesitamos información sobre la consulta hecha
	 //
	 ResultSetMetaData rsmd = ccc.getMetaData();
 
	 //Información de la consulta del número de filas
	 int columnas= rsmd.getColumnCount();
	 System.out.println("Se han encontrado "+columnas +"columnas");
 
	 //Alternativa para rellenar la cabecera de la tabla
	 /*
	   Object[] etiquetas = new Object[columnas];
       for (int i = 0; i < columnas; i++)
       {
           etiquetas[i] = rsmd.getColumnLabel(i + 1);
       }
 
       // Se meten las etiquetas en el modelo. El numero
       // de columnas se ajusta automáticamente.
       modelo.setColumnIdentifiers(etiquetas);
       */
	 //Rellenamos en la tabla con tantas columnas como campos tiene la consulta
 
	   for (int i=1;i<=columnas;i++){
		   //Cada columna que rellenamos ponemos el título del campo
		   modelo.addColumn(rsmd.getColumnName(i));
		   System.out.println("Rellenando el campo"+rsmd.getColumnName(i));
	   }
 
       //Ahora cargamos el contenido de la consulta en la tabla
	   while (ccc.next()){
		   // Se crea un array que será una de las filas de la tabla.
		   Object [] fila = new Object[columnas]; 
 
		   // Se rellena cada posición del array 
		   //Con cada fila de la consulta
		   for (int i=0;i<columnas;i++)
		      fila[i] = ccc.getObject(i+1); 
 
		   // Se añade al modelo la fila completa.
		   modelo.addRow(fila);
	   }
 
	 }catch(SQLException e){
		   System.out.println("Error en la tablita Se han encontrado "+e.getMessage());
 
	 }
 
 
 }
 
 
public static void main(String []s){
    ICliente ventanaCliente = new ICliente();
}
 
 
}//End class